调用PIL批量缩放图片分辨率

# -*- coding: utf-8 -*-   


"""调用PIL批量缩放图片分辨率
Usage:
imgdeal <IMGDIR> <MULTIPLE> <FORMAT>
"""
import os
from docopt import docopt
from PIL import Image

#遍历文件夹   
def img_convert(IMGDIR, MULTIPLE, FORMAT):
    for eachImage in os.listdir(IMGDIR):
        if eachImage.endswith(FORMAT):
            # srcFile原文件路径与名称,dstFile保存后的路径与名称,dstDir保存后的路径
            # imgFactor = os.stat(eachImage).st_size / MULTIPLE
            srcFile = os.path.join(IMGDIR, eachImage)
            dstFile = "{}\deal\{}".format(IMGDIR, eachImage)
            # SyntaxError: EOL while,所以是双斜杠
            dstDir = "{}deal\\".format(IMGDIR)
            if not os.path.exists(dstDir):
                os.makedirs(dstDir)
            # print(dstDir)
            sImg = Image.open(srcFile)
            w,h = sImg.size
            dImg = sImg.resize((int(w/int(MULTIPLE)),int(h/int(MULTIPLE))),Image.ANTIALIAS)
            # Image.NEAREST :低质量; Image.BILINEAR:双线性 ; Image.BICUBIC :三次样条插值; Image.ANTIALIAS:高质量
            dImg.save(dstFile)
            print("compress {} to {}".format(eachImage, dstDir))

if __name__ == '__main__':
    # 将绑定交互参数
    arguments = docopt(__doc__)
    IMGDIR = arguments['<IMGDIR>']
    MULTIPLE = arguments['<MULTIPLE>']
    FORMAT = arguments['<FORMAT>']
    img_convert(IMGDIR, MULTIPLE, FORMAT)

猜你喜欢

转载自blog.csdn.net/u012700515/article/details/84345786