我对图像文件的信息了解较少。
为了能够在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)。
然后,从这个答案中,我尝试了下面使用“压缩质量”代码部分: 代码部分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文件颜色发生了反转。
为什么会发生这种情况?