BufferedImage 造成内存溢出

hzwowo 2012-03-03 08:56:50
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics2D g2 = image.createGraphics();
g2.fillRect(0, 0, image.getWidth(), image.getHeight());
if(carvingType==1){

DefaultSealFrame frame = new DefaultSealFrame(left, top, frameWidth * AbstractSeal.mm, frameHeight
* AbstractSeal.mm, frameLineWidth * AbstractSeal.mm, frameType);
SealChipNest chipNest=new SealChipNest(14*AbstractSeal.mm, frame);
chipNest.draw(g2);
}
else if (isPrintable()) {
seal.setPrintable(true);
seal.draw(g2);
// 镜像
final AffineTransform hFlip = new AffineTransform(-1.0, 0, 0, 1.0, width, 0);
g2.drawImage(image, hFlip, null);
} else {
seal.draw(g2);
}
// AbstractSeal abstractSeal=(AbstractSeal) seal;
// abstractSeal.saveDraw();
g2.dispose();
ImageIO.write(image, "jpeg", response.getOutputStream());
response.getOutputStream().flush();
一次性显示很多图片的,在BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); 这行报内存溢出了

...全文
1304 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
冰思雨 2012-03-04
  • 打赏
  • 举报
回复
显示一张大图片,和,显示多张图片的时候,BufferedImage 必然有内存溢出的风险。
因为,你所有压缩格式的图片,都被转换成像素点阵,存放到内存当中,这个是非常消耗资源的。
而且,BufferedImage 设计这个类的目的,主要是为了,显示小图标,一般都是64X64像素的图片,
楼主要是操作大的图片,要么,每次处理一张(不要过大),
要么,网上查查,还有没有其他JAR包支持的,拿来用用。

62,622

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧