Java 使用thumbnailator从JPG转换为PNG时,图像大小增加了两倍

Java 使用thumbnailator从JPG转换为PNG时,图像大小增加了两倍,java,image-processing,jpeg,thumbnails,javax.imageio,Java,Image Processing,Jpeg,Thumbnails,Javax.imageio,我在应用程序中使用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\\SampleJPGI

我在应用程序中使用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文件。我不应该去压缩。JPEG和PNG都是压缩图像格式

JPEG使用频率变换和量化压缩像素。它可以是有损或无损压缩格式

PNG是一种无损压缩格式,具有不同的压缩机制。我敢说“质量”参数实际上根本不会改变图像

最大的图像文件类型是BMP(.BMP),即每个像素加上一个头的3个字节(RGB)。在决定图像文件是否“大”时,应该记住这个大小。JPEG压缩非常好

听起来你的图像有很多细节,可以在频域(JPEG)中很好地压缩,但在PNG中压缩效果很差


最简单的解决方案:JPEG格式的缩略图。如果您需要使用PNG,并且正在调整图像的大小,我建议您调整JPEG的大小,然后转换为PNG。

调整“大小”和“压缩”之间有区别-是的,调整大小会改变大小,从而改变字节大小,但压缩会对现有字节数据应用算法,以减少其过大(随后需要解压缩),而且,jpg和png压缩之间也有区别。jpg取决于更好,但通常会降低图像的质量。虽然我不太清楚为什么会出现如此不一致的情况,但我不确定为什么调整JPEG的大小,然后转换png会有帮助?很可能,您会引入额外的JPEG伪影我认为使用PNG压缩会更糟糕。不过我认为你的答案涵盖了最重要的细节。也就是说,尺寸的增加是意料之中的。+1好吧,如果你调整大小然后压缩,有损JPEG会删除一些图像细节,PNG可能会变小(但是,是的,它也可能会变大!)。