我正在尝试使用 Apache Commons-imaging 读/写 PNG。
文件名 : big-buck-bunny-1080p.png (1920*1080)
大小:1,45 Mo(1 527 631 八位字节)
我正在使用 java-image-scaling 来缩放我的图像。
对于这个测试,我尝试使用与源相同的宽度和高度来缩放我的文件,并将结果写入 png。
BufferedImage image = ImageIO.read(fileIn);
ResampleOpSingleThread resampleOp = new ResampleOpSingleThread(imageDimension.getWidth(), imageDimension.getHeight());
resampleOp.setUnsharpenMask(AdvancedResizeOp.UnsharpenMask.Normal);
BufferedImage resizedImage = resampleOp.filter(image, null);
final Map<String, Object> writeParams = new HashMap<String, Object>();
writeParams.put(PngConstants.PARAM_KEY_FORMAT, ImageFormat.IMAGE_FORMAT_PNG);
writeParams.put(PngConstants.PARAM_KEY_PNG_FORCE_TRUE_COLOR, Boolean.TRUE);
//writeParams.put(PngConstants.PARAM_KEY_COMPRESSION, TiffConstants.TIFF_COMPRESSION_LZW);
byte bytes[] = Imaging.writeImageToBytes(resizedImage, ImageFormat.IMAGE_FORMAT_PNG, writeParams);
FileUtils.writeByteArrayToFile(fileOut, bytes);
但问题是输出文件太大:
2,53 个月(2 655 456 个八位字节)
我需要什么来压缩 png 文件?
如果我使用库输出文件信息。我得到这个:
Format Details: Png
Bits Per Pixel: 24
Comments: 0
Format: PNG
Format Name: PNG Portable Network Graphics
Compression Algorithm: PNG Filter
Height: 1080
MimeType: image/png
Number Of Images: 1
Physical Height Dpi: -1
Physical Height Inch: -1.0
Physical Width Dpi: -1
Physical Width Inch: -1.0
Width: 1920
Is Progressive: false
Is Transparent: false
Color Type: RGB
Uses Palette: false
我在这里取了样本:http: //static.pcinpact.com/images/bd/news/93707-big-buck-bunny.png
我用这段代码遇到了同样的问题
BufferedImage image = Imaging.getBufferedImage(new File("./src/test/resources/big-buck-bunny-1080p.png"));
Imaging.writeImage(image, new File("output.png"), ImageFormat.IMAGE_FORMAT_PNG, null);
这是原始文件: http: //postimg.org/image/xob1ss6gj/
这里是上面片段的输出文件(读,写):http ://postimg.org/image/qu0r33dtf/