Linux上安装Python的PIL和Pillow库处理图片的实例教程


Posted in Python onJune 23, 2016

安装
正常情况,只需

pip install PIL==1.1.7

或者

pip install Pillow==2.9.0

即可。但需留意安装后的输出
安装完成后,需留意输出:

*** TKINTER support not available
*** JPEG support not available
*** WEBP support not available
*** ZLIB (PNG/ZIP) support not available
*** FREETYPE2 support not available
*** LITTLECMS support not available

是否有需要但不支持的格式,如果有,需安装支持的包。以jpg/png/web为例。
依赖库(library)安装
首先检查是否已经安装

ll /usr/lib/libjpeg.*

-rw-r--r-- 1 root root 221942 Jun 30 2010 /usr/lib/libjpeg.a
-rw-r--r-- 1 root root  918 Jun 30 2010 /usr/lib/libjpeg.la
lrwxrwxrwx 1 root root   17 Mar 21 16:19 /usr/lib/libjpeg.so -> libjpeg.so.62.0.0
lrwxrwxrwx 1 root root   17 Jan 10 10:44 /usr/lib/libjpeg.so.62 -> libjpeg.so.62.0.0
-rw-r--r-- 1 root root 145048 Jun 30 2010 /usr/lib/libjpeg.so.62.0.0

如果没有,则需要安装包
Debian系:

apt-get install libjpeg8-dev for jpg
apt-get install zlib1g-dev for png
apt-get install libwebp-dev for webp

RedHat系:

yum install libjpeg-devel libpng-devel libwebp-devel

安装完成后,还需要手动建立软链接
DEBIAN 7 & Ubuntu14.04:

ln -s /usr/lib/x86_64-linux-gnu/libjpeg.so /usr/lib
ln -s /usr/lib/x86_64-linux-gnu/libfreetype.so /usr/lib
ln -s /usr/lib/x86_64-linux-gnu/libz.so /usr/lib
ln -s /usr/lib/x86_64-linux-gnu/libwebp.so /usr/lib

Centos 6.5:

ls -s /usr/lib64/libjpeg.so /usr/lib
ls -s /usr/lib64/libz.so /usr/lib
ls -s /usr/lib64/libwebp.so /usr/lib

重新安装
以上就绪后,两种办法重新安装:

pip install -I PIL==1.1.7

-I意思是Force reinstall。安装完成时留意输出对格式的支持。
或者下载源码重装一次,以PIL为例

wget http://effbot.org/downloads/Imaging-1.1.7.tar.gz
tar -xzvf Imaging-1.1.7.tar.gz
cd Imaging-1.1.7
python setup.py install

对格式的支持可在源码目录下

python selftest.py
* TKINTER support not installed
—- JPEG support ok
—- ZLIB (PNG/ZIP) support ok

如果这里有问题(Debian & Ubuntu没有,但Centos 6.5有), 需要 python setup.py build_ext -i 然后重试。

批量转换图片实现
需求是这样的,由于现在相机像素都很高,拍出来的照片很大,上传到网上相册太慢,于是要先转下大小,之前都是直接在网上搜图片处理的软件,后来想了一下,既然会编程,这种需求完全可以自己动手搞。
Python的图片处理爽歪歪,几行代码搞定,这里用的是pillow库。
下面上代码。

#coding=utf-8 
from PIL import Image#需要pillow库 
import glob, os 
in_dir ='tmp_photo'#源图片目录 
out_dir = in_dir+'_out'#转换后图片目录 
percent = 0.4#缩放比例 
if not os.path.exists(out_dir): os.mkdir(out_dir) 
 
#图片批处理 
def main(): 
  for files in glob.glob(in_dir+'/*'): 
    filepath,filename = os.path.split(files) 
    im = Image.open(files) 
    w,h = im.size 
    im = im.resize((int(w*percent), int(h*percent))) 
    im.save(os.path.join(out_dir,filename)) 
 
if __name__=='__main__': 
  main()
Python 相关文章推荐
python re正则表达式模块(Regular Expression)
Jul 16 Python
python实现的文件夹清理程序分享
Nov 22 Python
用Python登录Gmail并发送Gmail邮件的教程
Apr 17 Python
Python编程中的文件操作攻略
Oct 16 Python
django如何连接已存在数据的数据库
Aug 14 Python
Tensorflow使用支持向量机拟合线性回归
Sep 07 Python
解决python selenium3启动不了firefox的问题
Oct 13 Python
Python补齐字符串长度的实例
Nov 15 Python
详解python实现交叉验证法与留出法
Jul 11 Python
Python+pyftpdlib实现局域网文件互传
Aug 24 Python
python爬虫beautifulsoup解析html方法
Dec 07 Python
Python用SSH连接到网络设备
Feb 18 Python
尝试用最短的Python代码来实现服务器和代理服务器
Jun 23 #Python
Python基础篇之初识Python必看攻略
Jun 23 #Python
浅谈python中scipy.misc.logsumexp函数的运用场景
Jun 23 #Python
浅谈Python中用datetime包进行对时间的一些操作
Jun 23 #Python
Python中在脚本中引用其他文件函数的实现方法
Jun 23 #Python
python中的lambda表达式用法详解
Jun 22 #Python
深入浅析python中的多进程、多线程、协程
Jun 22 #Python
You might like
PHP开发中四种查询返回结果分析
2011/01/02 PHP
php中this关键字用法分析
2016/12/07 PHP
PHP设计模式(八)装饰器模式Decorator实例详解【结构型】
2020/05/02 PHP
javascript 计算两个整数的百分比值
2009/12/26 Javascript
Javascript笔记一 js以及json基础使用说明
2010/05/22 Javascript
jquery如何改变html标签的样式(两种实现方法)
2013/01/16 Javascript
jquery submit ie6下失效的原因分析及解决方法
2013/11/15 Javascript
javascript下使用Promise封装FileReader
2016/02/19 Javascript
一步步教大家编写酷炫的导航栏js+css实现
2016/03/14 Javascript
jquery 动态增加,减少input表单的简单方法(必看)
2016/10/12 Javascript
JSON对象 详解及实例代码
2016/10/18 Javascript
Bootstrap基本样式学习笔记之标签(5)
2016/12/07 Javascript
详谈JavaScript的闭包及应用
2017/01/17 Javascript
详解nodejs的express如何自动生成项目框架
2017/07/12 NodeJs
详解10分钟学会vue滚动行为
2017/09/21 Javascript
NodeJS实现视频转码的示例代码
2017/11/18 NodeJs
[51:53]完美世界DOTA2联赛循环赛 LBZS vs DM BO2第二场 11.01
2020/11/02 DOTA
[01:25:38]DOTA2-DPC中国联赛 正赛 VG vs LBZS BO3 第一场 1月19日
2021/03/11 DOTA
Python六大开源框架对比
2015/10/19 Python
Python机器学习之决策树算法实例详解
2017/12/06 Python
Python 虚拟空间的使用代码详解
2019/06/10 Python
python基础 range的用法解析
2019/08/23 Python
Django--权限Permissions的例子
2019/08/28 Python
利用pandas向一个csv文件追加写入数据的实现示例
2020/04/23 Python
Django Admin 上传文件到七牛云的示例代码
2020/06/20 Python
Python自动化之UnitTest框架实战记录
2020/09/08 Python
CSS3图片旋转特效(360/60/-360度)
2013/10/10 HTML / CSS
基于CSS3制作立体效果导航菜单
2016/01/12 HTML / CSS
英文版区域经理求职信
2013/10/23 职场文书
大学校园活动策划书
2014/02/04 职场文书
物流业务员岗位职责
2014/02/08 职场文书
《尊严》教学反思
2014/02/11 职场文书
德语专业求职信
2014/03/12 职场文书
学期评语大全
2014/04/30 职场文书
项目委托协议书(最新)
2014/09/13 职场文书
学生早退检讨书(范文)
2019/08/19 职场文书