gpt4 book ai didi

java - 如何将 BufferedImage 写为 PNG 且不进行压缩?

转载 作者:搜寻专家 更新时间:2023-11-01 03:25:21 28 4
gpt4 key购买 nike

我需要将 BufferedImage 编写为 .png 且不执行压缩。我环顾四周,想出了以下代码。

public void save(String outFilePath) throws IOException {
Iterator<ImageWriter> iter = ImageIO.getImageWritersByFormatName("png");
ImageWriter writer = iter.next();

File file = new File(outFilePath);
ImageOutputStream ios = ImageIO.createImageOutputStream(file);
writer.setOutput(ios);

ImageWriteParam iwp = writer.getDefaultWriteParam();
iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
iwp.setCompressionQuality(1.0f);

IIOImage image = new IIOImage(mapImage, null, null);

writer.write(null, image, iwp);
writer.dispose();

//ImageIO.write(mapImage, "png", file);
}

这是抛出的异常。

Exception in thread "main" java.lang.UnsupportedOperationException: Compression not supported.
at javax.imageio.ImageWriteParam.setCompressionMode(Unknown Source)
at Map.MapTransformer.save(MapTransformer.java:246)
at Map.MapTransformer.main(MapTransformer.java:263)

最佳答案

PNG 图像通过首先应用预测来实现压缩 filter (您可以在五个变体中进行选择),然后使用 ZLIB 压缩预测误差。这两个步骤你不能省略,你可以做的是指定“NONE”作为预测过滤器,并为 ZLIB 压缩指定 compressionLevel=0,这将大致对应于未压缩的图像。 javax.imageio.* 包不允许(我认为)选择这个参数,也许你可以试试 thisthis

关于java - 如何将 BufferedImage 写为 PNG 且不进行压缩?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15318677/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com