【发布时间】:2017-04-22 05:23:18
【问题描述】:
我正在尝试将文件夹中的所有图像缩小到各自大小的 90%。写了这个:
from PIL import Image
import sys, csv, os, traceback
path = "C:\Users\Dell\Desktop\Textures\\"
dirs = os.listdir( path )
scalingFactor = .9
def resize():
for item in dirs:
print 'item', path+item
if os.path.isfile(path+item):
im = Image.open(path+item)
f, e = os.path.splitext(path+item)
imResize = im.resize((int(im.size[0]*scalingFactor),int(im.size[1]*scalingFactor)), Image.ANTIALIAS)
fileName = f.split('\\')[-1]
imResize.save(path + "/Out/" + fileName + ' resized_' + str(scalingFactor) + ".png" , 'PNG')
但是,当我运行它时,图像的大小实际上是在增加而不是减少(正如我所期望的那样)。
例如。原始图像 885x1130 466KB
输出图像 796x1017 1.44 MB!
我之前在旋转 PNG 时也有过类似的非直观体验,并得到了 explanation about it here on Stackoverflow。但我无法说服自己这可能是同一个问题。
有什么线索吗?我还能做些什么来减少 PNG 的大小?如果需要,质量会有所下降。
【问题讨论】:
-
您是否因为想要更小的像素尺寸而缩小这些图像?还是您这样做是为了减少文件的字节大小?
-
请注意,使用抗锯齿进行缩放会产生 很多 的中间颜色,这些颜色在原始颜色中不存在,并且会改变图像的可压缩性。 PNG 有许多压缩选项,但很少有程序可以让您访问允许您“调整”压缩的参数,并且选择最佳参数是一项复杂的任务。有一些PNG重新压缩程序漂浮在周围;我使用并推荐OptiPNG。
-
@PM2Ring 我想要更小的文件大小。是的,我使用 OptiPNG 作为后期处理的一部分,但它并没有将尺寸减小到我想要的程度。所以我想缩小它并期望文件大小减小。
标签: python algorithm png python-imaging-library image-compression