<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
一直使用mongodb来保持图片的,以前生成缩略图的时候总是先将图片打开然后在对图片创建流保存到mongodb中,缺点大家可想而知,
一开始认为还可以,但是测试发现 过去程序和mongodb不是在同一台机器上的话,有的时候可能打开图片失败,我个人认为是网络传输的原因。
只要程序和mongodb在同一台机器上面就不出现这样的原因。
后来想到直接将mongodb中的图片的流取出来 使用图片流来生成缩略图。
public byte[] getImageByte(GridFSDBFile gridFSFile,DB db,int width,int height){
OutputStream os=new ByteArrayOutputStream();
InputStream is=null;
byte[] b=null;
try {
gridFSFile.writeTo(os); //写入输出流
ByteArrayOutputStream byteArrayOutputStream = (ByteArrayOutputStream) os;
is = new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
Image image=ImageIO.read(is);
Thumbnail thumbnail=new Thumbnail(image);
b= thumbnail.resizeFixLimitHeight(width, height);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if (is!=null)
try {
is.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(os!=null)
try {
os.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return b;
}这样一来就不会出网络间调用出现问题的情况!
本文讨论了一种改进图片处理方法的技术,通过直接从MongoDB获取图片流,避免了网络调用可能导致的图片打开失败问题。详细介绍了如何在不同环境下确保图片处理的稳定性和效率。
1615

被折叠的 条评论
为什么被折叠?



