【发布时间】:2017-02-06 16:44:20
【问题描述】:
我没有关于图像文件的信息。
为了能够在 Java 中将 PNG 转换为 JPEG,起初我使用以下代码部分将 PNG 转换为 JPEG:inverted
代码第 1 部分)
BufferedImage newBufferedImage = new BufferedImage(bufferedImageFile.getWidth(), bufferedImageFile.getHeight(),
BufferedImage.TYPE_INT_RGB);
newBufferedImage.createGraphics().drawImage(bufferedImageFile, 0, 0, Color.WHITE, null);
File retTempFile = MakeupFileUtil.createTempFile(fileName);
ImageIO.write(newBufferedImage, "jpg", retTempFile);
return retTempFile;
这很好地完成了任务,但输出质量低于原始 PNG 图像质量(假设 PNG 质量为 100,但 JPEG 质量为 75)
然后,from this answer,我尝试了下面使用“压缩质量”的代码部分:
代码第 2 部分)
JPEGImageWriteParam jpegParams = new JPEGImageWriteParam(null);
jpegParams.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
jpegParams.setCompressionQuality(1f);
final ImageWriter writer = ImageIO.getImageWritersByFormatName("jpg").next();
writer.setOutput(new FileImageOutputStream(jpegFile));
writer.write(null, new IIOImage(bufferedImageFile, null, null), jpegParams);
但这一次,转换后的 JPEG 文件出现了反色。
为什么会这样?
【问题讨论】:
标签: java png jpeg javax.imageio