Python之PIL图片处理
由于工作原因需要将大量jpg图片文件缩放成宽度为1000像素的图片上传,最初是用图片处理工具进行一张张处理,但效率十分低下,于是就自己动手用Python实现一个批量处理工具。
PIL:Python Imaging Library,已经是Python平台事实上的图像处理标准库了。PIL功能非常强大,但API却非常简单易用。
在Debian/Ubuntu Linux下直接通过apt安装:
1 | sudo apt-get install python-imaging |
为了方便不同宽度的需求,程序要支持指定宽度,缩放后的图片保存在当前目录下的子目录中。程序代码如下
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | #!/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' |
使用方法:
01 02 03 04 05 06 07 08 09 10 | # 先要给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..