Python之PIL图片处理
由于工作原因需要将大量jpg图片文件缩放成宽度为1000像素的图片上传,最初是用图片处理工具进行一张张处理,但效率十分低下,于是就自己动手用Python实现一个批量处理工具。
PIL:Python Imaging Library,已经是Python平台事实上的图像处理标准库了。PIL功能非常强大,但API却非常简单易用。
在Debian/Ubuntu Linux下直接通过apt安装:
sudo apt-get install python-imaging
为了方便不同宽度的需求,程序要支持指定宽度,缩放后的图片保存在当前目录下的子目录中。程序代码如下
#!/usr/bin/env python # -*- coding:utf-8 -*- # Filename: resize-img.py # require: python-pil python-imaging import os import sys import Image # 重新设置图片大小 def resize_img(width, filename): newdir = "size_" + str(width) if not os.path.exists(newdir): os.mkdir(newdir) img = Image.open(filename) (x, y) = img.size x_s = width y_s = y * x_s / x out = img.resize((x_s, y_s), Image.ANTIALIAS) out.save(newdir + '/' + filename, 'jpeg'); if __name__ == "__main__": if len(sys.argv) != 2: print 'usage: ' + sys.argv[0] + " width(px)" print 'e.g. : ' + sys.argv[0] + " 1000" sys.exit(1) files = os.listdir(os.getcwd()) for filename in files: if 'jpg' == filename.split('.')[-1].lower(): resize_img(int(sys.argv[1]), filename) print 'resize ' + filename + ' succes'
使用方法:
# 先要给resize-img.py可执行权限 chmod 755 resize-img.py # 将当前文件夹下的jpg图片缩放到1000px # 缩放的图片会保存在当前目录下的size_1000目录中 ./resize-img.py 1000 # 将当前文件夹下的jpg图片缩放到1200px # 缩放的图片会保存在当前目录下的size_1200目录中 ./resize-img.py 1200
除非注明,戊辰人博客文章均为原创,转载请以链接形式标明本文地址
如果你这个是gif了。是不是只保存一帧了
还不清楚能否正确处理gif格式,因为我们要处理的图片都是jpg的,所以代码只做了jpg格式的测试。
看了下。原来pil已经很久不更新了。现在都用pillow。如果像你这样处理是不能够支持gif的。
我想也是不能支持gif格式的,毕竟和jpg格式区别还是挺大的,特别是动图。
PIL确实不更新了,Pillow是PIL的一个Fork,这个坑我也踩过
Nice article ! Thank you..