我正在使用一个通用的格式应用程序将图像作为png。上传的任何jpg图像仍然使用以下代码保存为png。
java.awt.image.BufferedImage bufferedImage = ImageIO.read(jpgImagePAth);
if(!IsExtensionPng(jpgImagePath)){
ImageIO.write(bufferedImage, "png", new File(pptFolder, justNamePng));
}
但这保留了alpha,即使它不在jpg中,所以制作2MB图像7MB和6MB到16MB。反正有没有维持alpha而保存png?
我需要转换到PNG的原因是,稍后当我在图像上添加文本时,它会失去实际的分辨率。我已经尝试了没有修复它的JPEG。
答案 0 :(得分:2)
这不是导致文件大小增长的alpha通道,而是文件类型。 JPG使用有损压缩; PNG是无损压缩。换句话说,JPG会抛出一些数据来减小文件的大小。这就是为什么你在保存到JPG时选择“质量”级别的原因 - 这决定了抛出多少钱。
你怎么知道你正在获得alpha频道?如果您仍然想要PNG并且想要确保丢弃Alpha通道,请将图像类型设置为BufferedImage.TYPE_RGB,例如
BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_BYTE_RGB);
您必须获取与新BufferedImage相关联的图形对象并将jpg复制到其上,然后将其写出来。 This question与您的不完全相同,但您可以找到有用的示例代码。
保
答案 1 :(得分:1)
我不知道你到底是什么情况。但我应该保留JPEG JPEG。将JPEG转换为PNG的唯一优势是浪费硬盘空间。