我合并使用下面的代码的两个图像。 没有透明度的一个基本图像,具有透明度的一个覆盖图像。 一个有自己图像的文件大小为20KB和5KB,分别。 一旦予合并两个图像,生成的文件大小是> 100KB,因此至少4倍25KB的组合尺寸。 我预计将比25KB以下的文件大小。
public static void mergeTwoImages(BufferedImage base, BufferedImage overlay, String destPath, String imageName) {
// create the new image, canvas size is the max. of both image sizes
int w = Math.max(base.getWidth(), overlay.getWidth());
int h = Math.max(base.getHeight(), overlay.getHeight());
BufferedImage combined = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
// paint both images, preserving the alpha channels
Graphics2D g2 = combined.createGraphics();
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2.drawImage(base, 0, 0, null );
g2.drawImage(overlay, 0, 0, null);
g2.dispose();
// Save as new image
saveImage(combined, destPath + "/" + imageName + "_merged.png");
}
我的应用程序必须是具有非常好的性能,从而任何人都可以解释我为什么这个效应发生,我怎么能减少生成的文件大小?
非常感谢!
编辑:非常感谢您的回答。 该saveImage代码是:
public static void saveImage(BufferedImage src, String file) {
try {
File outputfile = new File(file);
ImageIO.write(src, "png", outputfile);
} catch (IOException e) {
e.printStackTrace();
}
}