调整python中的图像代码也可以读取脚本文件

时间:2017-10-23 08:59:12

标签: python image python-imaging-library

我编写了一个使用Python Imaging库调整图像大小的脚本。代码工作正常,但脚本也在读取.py脚本文件。我怎么能避免这种情况?

import os 
import sys
import PIL
import PIL as pillow
from PIL import Image
from resizeimage import resizeimage

opts, args = getopt.getopt(sys.argv[1:], 'd:w:h:')
filepath = r'C://python27//test'
saved = 'C://python27//test2'
basewidth = 4193
for opt, arg in opts:
    if opt == '-d':
        filepath = arg
    if opt == '-w':
        basewidth = int(arg)

if basewidth == -1 or filepath == '':
    print('Invalid command line arguments. -d [directory] ' \
          '-w [width]  are required')
    exit()

for image in os.listdir(filepath):
    print('Resizing image ' + image)
    name,ext = os.path.splitext(image)
    if ext.lower() in [".png", ".jpg", ".bmp"]:
        img = Image.open(image)
        width = (basewidth / float(img.size[0]))
        height = int((float(img.size[1]) * float(width)))
        img = img.resize((basewidth, height), PIL.Image.ANTIALIAS)
        img = resizeimage.resize('crop', img, [3000, 2800])
        img.save(os.path.join(saved, 'resized-' + image))

输出: Resizing image 852A9961.JPG Resizing image pc1.PNG Resizing image try13.py

1 个答案:

答案 0 :(得分:2)

基本上,您必须在print('Resizing image ' + image)代码块中移动if行。这样,它只会在处理文件时打印消息,而不是目录中的每个文件。

出于文体方面的原因,在for image in os.listdir(filepath):行中你应该更改文件image这个词,因为从概念上讲,你在该列表中有通用文件。只有在if语句之后,您才能确定自己拥有可以处理的图像。