使用Python Imaging Library创建压缩循环?

时间:2013-11-27 00:34:28

标签: python python-imaging-library image-compression

我正在尝试编写一个程序,它将采用我输入的图像文件,以原始质量的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)还是有另一种压缩图像文件的方法?

提前感谢您的帮助!

0 个答案:

没有答案