[英]Java JPG To Png
我正在使用一种常见的格式应用程序将图像作为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没有修复它。
这不是导致文件大小增长的alpha通道,而是文件类型。 JPG使用有损压缩; PNG是无损压缩。 换句话说,JPG会抛出一些数据来减小文件的大小。 这就是为什么你在保存到JPG时选择“质量”级别的原因 - 这决定了抛出多少钱。
你怎么知道你正在获得alpha通道? 如果你仍然想要PNG并且想要确定你正在删除alpha通道,请将图像类型设置为BufferedImage.TYPE_RGB,例如
BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_BYTE_RGB);
您必须获取与新BufferedImage关联的图形对象并将jpg复制到其上,然后将其写出来。 这个问题与您的问题并不完全相同,但您可能会发现有用的示例代码。
保罗
我不知道你到底是什么情况。 但我应该保留JPEG JPEG。 将JPEG转换为PNG的唯一优势是浪费硬盘空间。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.