使用缩略图从 JPG 转换为 PNG 时图像大小增加了两倍
Posted
技术标签:
【中文标题】使用缩略图从 JPG 转换为 PNG 时图像大小增加了两倍【英文标题】:Image size increased twice when convert from JPG to PNG using thumbnailator 【发布时间】:2018-07-31 06:00:26 【问题描述】:我正在使用 Thumbnailator 压缩我的应用程序中的图像。当我尝试将 JPG 图像转换为 PNG 时,一切都很好。在这个过程中,图像的大小在压缩后增加了两倍。以下代码用于转换图像。
File a=new File("C:\\Users\\muthu\\Downloads\\SampleJPGImage_5mbmb.jpg");
Thumbnails.of(a).scale(1).outputQuality(0.5).toFile("C:\\Users\\muthu\\Downloads\\SampleJPGImage_5mbmb1.png");
使用纯java也这样做,代码如下
BufferedImage bufferedImage = ImageIO.read(new File("C:\\Users\\muthu\\Downloads\\SampleJPGImage_5mbmb.jpg"));
ImageIO.write(bufferedImage, "png", new File("C:\\Users\\muthu\\Downloads\\javaPngimage.png"));
例如:5MB 图像文件转换为 32MB 文件。我不应该去调整大小来压缩。我被这个困住了
【问题讨论】:
“调整大小”和“压缩”之间是有区别的 - 是的,调整大小会改变大小,这会改变字节大小,但是压缩会将算法应用于现有字节数据以减少它的结束大小(然后需要稍后解压缩),而且 jpg 和 png 压缩之间存在差异。 Jpg 取决于更好,但通常会降低图像质量。虽然我不太清楚为什么你会得到这样的差异 【参考方案1】:JPEG 和 PNG 都是压缩图像格式。
JPEG 使用频率变换和量化来压缩像素。它可以是有损或无损压缩格式。
PNG 是一种无损压缩格式,具有不同的压缩机制。我敢说“质量”参数实际上并没有改变图像。
最大的图像文件类型是 BMP (.bmp),它是每个像素加上一个标题的 3 个字节 (RGB)。在决定图像文件是否“大”时,值得牢记这个大小。 JPEG 压缩非常好。
听起来您的图像有很多细节可以在频域 (JPEG) 中很好地压缩,但压缩为 PNG 时效果不佳。
最简单的解决方案:JPEG 格式的缩略图。如果您需要使用 PNG,并且您正在调整图像大小,我建议您调整 JPEG 大小然后转换为 PNG。
【讨论】:
不确定我是否理解为什么调整 JPEG 大小然后转换 PNG 会有所帮助?最有可能的是,您会引入额外的 JPEG 伪影,我认为这些伪影会使用 PNG 压缩得更差。我认为您的回答涵盖了最重要的细节。 IE。这种规模的增加是意料之中的。 +1 好吧,如果你调整大小然后压缩,有损 JPEG 将删除一些图像细节,而 PNG 可能最终会变小(但是,是的,它也可能会变大!)。以上是关于使用缩略图从 JPG 转换为 PNG 时图像大小增加了两倍的主要内容,如果未能解决你的问题,请参考以下文章