【发布时间】:2018-10-15 15:25:49
【问题描述】:
更新:
进一步阅读后发现,压缩不仅不存储在图像标题中,而且质量数字基本上没有意义,因为不同的程序有不同的处理方式。我仍然把它留在这里,以防有人有一个非常聪明的解决方案。
我确实写了一个日志,并且有一种方法可以记录我最后一次压缩图像的时间,并将其与文件的最后修改时间进行比较,尽管我仍然想解决获得其他图像质量的问题,我可以'不只是按时间修改。
原问题:
我有一个小的Python 脚本,它遍历某些文件夹并使用枕头库将某些.jpg 文件压缩到60 质量。
它可以工作,但是在第二次迭代中它会压缩所有已经压缩的图像。
那么有没有办法获得.jpg 当前具有的压缩或质量,以便我可以跳过已经压缩的文件?
import os
from os.path import join, getsize
from PIL import Image
start_directory = ".\\test"
for root, dirs, files in os.walk(start_directory):
for f in files:
try:
with Image.open(join(root, f)) as im:
if im.quality > 60: # <= something like this
im.save(join(root, f),optimize=True,quality=60)
im.close() # <= not sure if necessary
except IOError:
pass
【问题讨论】:
-
我认为这个任务是一个非常糟糕的主意,因为 JPEG 的 generation loss 将远远超过您选择的保存质量的差异。 jpegtran 可以对 JPEG 进行一些无损优化。
标签: python python-3.x jpeg pillow image-compression