Мне нужно написать BufferedImage
как .png без сжатия. Я осмотрелся и придумал следующий код.Как написать 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)
если вы не собираетесь его сжимать ... почему бы не bmp? – radai
Возможно, вы должны использовать MODE_DISABLED. – NovaDenizen
Кроме того, единственным препятствием для включения сжатия на «PNG» является несколько более дорогостоящая операция. 'PNG' без потерь, поэтому сжатие не оказывает вредного влияния на качество изображения. – NovaDenizen