用PIL调整JPEG图像大小为什么会增加文件大小?

4

我写了一段Python代码,可以将图像调整为最大1200 x 1200的框架,保持其宽高比。我遇到了这样一种情况,即输入图像(1080 x 1350)大小为249.8KB,而输出图像(960 x 1200)大小为317.2KB。尽管使用了optimize = True并保持了质量,但仍然会出现这种情况。我的代码如下:

from PIL import Image
from wand.image import Image as Wand

MAX_RES = 1200
photo = Image.open("input.jpg")
breadth,height = photo.size
qual = Wand(filename="input.jpg").compression_quality
if(not((breadth <= MAX_RES) and (height <= MAX_RES))):
    resizeRatio = max (float(breadth)/MAX_RES, float(height)/MAX_RES)
    photo = photo.resize((int(breadth/resizeRatio),int(height/resizeRatio)))
    photo.save("output.jpg",optimization = True,quality=qual) 

使用Image.ANTIALIAS会使图像大小进一步增加。


你确定知道原始JPEG的设置是什么吗?(质量等) - SuperBiasedMan
1
压缩图像文件的大小并不直接与图像本身的尺寸有关。即使只是简单调整图像大小,采用某些压缩方法可能会降低压缩效率。 - Jean-Baptiste Yunès
@SuperBiasedMan,在Ubuntu机器上怎么知道呢?我已经把文件存在硬盘里了。 - Sagnik Sinha
1
@SagnikSinha 我不熟悉PIL,但是这里有一个详细的答案:[https://dev59.com/YW855IYBdhLWcg3wbjnO] - SuperBiasedMan
@SagnikSinha 你可以使用identify命令行工具来查找图像属性。你的原始图像可能比调整大小后的图像质量低。 - user4815162342
@user4815162342,我正在使用wand获取质量,你可以在代码中看到Wand(filename="input.jpg").compression_quality。即使保持质量并减小大小,输出文件的大小仍然比输入文件大。 - Sagnik Sinha
1个回答

0

影响JPEG压缩的因素有很多:

  1. Cb和Cr分量的子采样。
  2. 使用的量化表(有时简化为“质量”设置)
  3. 是否使用了优化的霍夫曼表。

很可能您的输入设置与输出设置非常不同。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接