Java JPG To Png

时间:2011-05-18 17:21:39

标签: java image-processing awt image-editor

我正在使用一个通用的格式应用程序将图像作为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。

2 个答案:

答案 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的唯一优势是浪费硬盘空间。