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二分法实现实例
Nov 21 Python
python写的一个squid访问日志分析的小程序
Sep 17 Python
Python计算三维矢量幅度的方法
Jun 15 Python
Python随手笔记第一篇(2)之初识列表和元组
Jan 23 Python
利用pandas读取中文数据集的方法
Jul 25 Python
Python完成毫秒级抢淘宝大单功能
Jun 06 Python
django的聚合函数和aggregate、annotate方法使用详解
Jul 23 Python
Django获取应用下的所有models的例子
Aug 30 Python
Python内置类型性能分析过程实例
Jan 29 Python
Python偏函数Partial function使用方法实例详解
Jun 17 Python
Python3使用tesserocr识别字母数字验证码的实现
Jan 29 Python
Python基本的内置数据类型及使用方法
Apr 13 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
转生史莱姆:萌王第一次撸串开心到飞起,哥布塔撸串却神似界王神
2018/11/30 日漫
weiphp微信公众平台授权设置
2016/01/04 PHP
PHP获取数组中指定的一列实例
2017/12/27 PHP
js禁止页面使用右键(简单示例代码)
2013/11/13 Javascript
JavaScript中的原型链prototype介绍
2014/12/30 Javascript
深入学习JavaScript中的Rest参数和参数默认值
2015/07/28 Javascript
用jQuery旋转插件jqueryrotate制作转盘抽奖
2017/02/10 Javascript
jQuery实现贪吃蛇小游戏(附源码下载)
2017/03/04 Javascript
js 数字、字符串、布尔值的转换方法(必看)
2017/04/07 Javascript
轻松玩转BootstrapTable(后端使用SpringMVC+Hibernate)
2017/09/06 Javascript
使用vue实现简单键盘的示例(支持移动端和pc端)
2017/12/25 Javascript
JS中使用new Option()实现时间联动效果
2018/12/10 Javascript
jQuery实现的模仿雨滴下落动画效果
2018/12/11 jQuery
[51:17]VGJ.T vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python中使用scapy模拟数据包实现arp攻击、dns放大攻击例子
2014/10/23 Python
Python判断字符串与大小写转换
2015/06/08 Python
Python脚本处理空格的方法
2016/08/08 Python
python僵尸进程产生的原因
2017/07/21 Python
Python格式化输出字符串方法小结【%与format】
2018/10/29 Python
Python之虚拟环境virtualenv,pipreqs生成项目依赖第三方包的方法
2019/07/23 Python
django的ORM操作 增加和查询
2019/07/26 Python
Python进程间通信 multiProcessing Queue队列实现详解
2019/09/23 Python
Python爬取YY评级分数并保存数据实现过程解析
2020/06/01 Python
Numpy(Pandas)删除全为零的列的方法
2020/09/11 Python
Python字符串查找基本操作代码案例
2020/10/27 Python
PyQt5通过信号实现MVC的示例
2021/02/06 Python
HTML5中input输入框默认提示文字向左向右移动的示例代码
2020/09/10 HTML / CSS
大学在校生求职信范文
2013/11/21 职场文书
车队司机自我鉴定
2014/03/02 职场文书
班级年度安全计划书
2014/05/01 职场文书
2014年卫生院工作总结
2014/12/03 职场文书
2015年质量管理工作总结范文
2015/05/18 职场文书
2015暑期爱心支教策划书
2015/07/14 职场文书
旷工检讨书大全
2015/08/15 职场文书
合理化建议书范文
2015/09/14 职场文书
Python语言内置数据类型
2022/02/24 Python