Python之PIL图片处理

日期:2015年12月28日 作者: 分类:编程 浏览:9175

由于工作原因需要将大量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

 

标签:,

除非注明,戊辰人博客文章均为原创,转载请以链接形式标明本文地址

本文地址:https://wanglu.info/2015/12/1120.html