我在保存大尺寸(比如 12,000 x 9,000 像素)的图片时遇到了问题。
我正在开发一款图形编辑软件(类似简化版 Photoshop),用户必须能够保存图片。
假设我想将图像保存为 .png 格式,那么 Java 是否总是需要使用 BufferedImage 来保存绘制的内容呢?
我知道计算图像大小的公式是:X 尺寸 × Y 尺寸 × 4(红、绿、蓝、透明度),因此在这种情况下,图像大小超过了 400MB。
我知道可以将图像分割成多个部分(瓦片)来保存,但无论如何用户都必须合并它们。
有没有其他方法可以在不使用 BufferedImage 的情况下保存如此大的图像呢?
保存图像的代码:
public static void SavePanel() {
BufferedImage image = null;
image = new BufferedImage(
(int) (Main.scale * sizeX ),
(int) (Main.scale * sizeY ),
BufferedImage.TYPE_INT_RGB);
g2 = image.createGraphics();
panel.paint(g2);
try {
ImageIO.write(image, "png", new File(FactoryDialog.ProjectNameTxt.getText() + ".png"));
} catch (IOException e) {
}
}
感谢您的提前帮助!
BufferedImage
,将感兴趣的区域绘制到其中,然后返回其Raster
或SampleModel
。如果这本身就是一个问题,也许最好单独发布一个关于这些问题的问题,这样我们就不必在评论中讨论它了。 - Waldheinz