【发布时间】:2015-05-29 22:50:54
【问题描述】:
我有一个尺寸的 JPEG 主图像和另一个尺寸的输入 Jpeg 图像。因此,我编写了以下代码来将图像从一个维度转换为另一个维度。 当输入图像的尺寸约为 900 * 700 且主图像的尺寸为 1200 * 800 时,此代码可以正常工作。 当主/输入图像的尺寸约为 3400*1900 和 4400*2400 时,它不起作用。 谁能告诉我哪里出错了!
public void checkSizeandResize(String file1, String file2){
BufferedImage scaled = null;
BufferedImage image1 = null;
BufferedImage image2 = null;
Graphics2D graphics2d = null;
try{
image1 = imageToBufferedImage(loadJPG(file1));
image2 = imageToBufferedImage(loadJPG(file2));
if(image1.getHeight()!=image2.getHeight() || image1.getWidth()!=image2.getWidth()){
scaled = new BufferedImage(image2.getWidth(),image2.getHeight(), image2.getType());
graphics2d = scaled.createGraphics();
graphics2d.setComposite(AlphaComposite.Src);
graphics2d.drawImage(image1, 0, 0,null);
graphics2d.dispose();
ImageIO.write(image1, extension,new File(file2));
}
}
catch(Exception exception)
{
exception.printStackTrace();
}
finally
{
scaled = null;
image1 = null;
image2 = null;
graphics2d = null;
}
}
【问题讨论】:
-
imageToBufferedImage(loadJPG(...)) 是做什么的?你确实意识到这实际上并没有缩放任何东西?您是否收到任何错误输出(例如内存不足)?
-
这个方法只是将 Image 转换为缓冲的 java.awt.Image 像 BufferedImage bi = new BufferedImage(img.getWidth(null), img.getHeight(null), BufferedImage.TYPE_INT_RGB);
-
有什么理由不能使用 ImageIO.read?
-
我没有看到任何错误,但它没有转换为所需的尺寸
标签: java image image-resizing javax.imageio jai