【问题标题】:Why does resizing a JPEG image using PIL, increases file size?为什么使用 PIL 调整 JPEG 图像的大小会增加文件大小?
【发布时间】:2015-11-25 22:40:51
【问题描述】:

我编写了一个 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,如何在 Ubuntu 机器上知道这一点?我的硬盘上有文件
  • @SagnikSinha 我对 PIL 不熟悉,但有一个广泛的答案 here
  • @SagnikSinha 您可以使用identify command-line tool 查找图像属性。您的原始图像的质量可能低于调整大小后的图像。

标签: python image-processing jpeg python-imaging-library wand


【解决方案1】:

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

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

很可能您的输入设置与输出设置有很大不同。

【讨论】:

    猜你喜欢
    • 2010-12-28
    • 2017-04-01
    • 2018-01-06
    • 2012-12-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-02
    • 1970-01-01
    • 2010-12-02
    相关资源
    最近更新 更多