我正在尝试编写一个程序,它将采用我输入的图像文件,以原始质量的50%保存新的压缩版本,然后打开新文件并再次运行n次。基本上我需要它是一个巨大的压缩反馈循环,每次都会创建一个新文件。这是一个视觉艺术项目。
不幸的是,它看起来不像PIL会重新压缩使用自己的压缩算法创建的文件,所以基本上当我尝试运行它时,我最终得到n个相同的确切文件。
我在运行OS X 10.7的Intel Mac上使用PIL和Python 3.3。这是整个计划:
import os
from PIL import Image
def compressLoop(infile, times):
'''
Progressively loads, compresses, creates files based on original JPEG 'times' number of times.
'''
n = 1
baseName, e = os.path.splitext(infile)
try:
while n <= times:
f, e = os.path.splitext(infile)
f = (baseName + str(n))
outfile = f + ".jpg"
#open previously generated file
compImg = Image.open(infile)
#compress file at 50% of previous quality
compImg.save(outfile, "JPEG", quality=50)
infile = outfile
n = n+1
except IOError:
print("Cannot convert", infile)
def main():
infile = str(input("Filename to compress: "))
times = int(input("Times to process: "))
compressLoop(infile, times)
main()
这个问题有没有解决方法?我在compImg.save中使用了正确的函数(outfile,“JPEG”,quality = 50)还是有另一种压缩图像文件的方法?
提前感谢您的帮助!