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 相关文章推荐
TensorFlow高效读取数据的方法示例
Feb 06 Python
Python实现将多个空格换为一个空格.md的方法
Dec 20 Python
Python如何爬取实时变化的WebSocket数据的方法
Mar 09 Python
pyqt5、qtdesigner安装和环境设置教程
Sep 25 Python
Python图像处理库PIL的ImageFont模块使用介绍
Feb 26 Python
Pytorch对Himmelblau函数的优化详解
Feb 29 Python
详解Python 实现 ZeroMQ 的三种基本工作模式
Mar 24 Python
对python中arange()和linspace()的区别说明
May 03 Python
如何基于python实现年会抽奖工具
Oct 20 Python
Python爬虫之Selenium鼠标事件的实现
Dec 04 Python
浅析python字符串前加r、f、u、l 的区别
Jan 24 Python
Python使用BeautifulSoup4修改网页内容
May 20 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的preg_match匹配字符串长度问题解决方法
2014/05/03 PHP
PHP常用日期加减计算方法实例小结
2018/07/31 PHP
Laravel 5.4前后台分离,通过不同的二级域名访问方法
2019/10/13 PHP
javascript 关闭IE6、IE7
2009/06/01 Javascript
javascript之典型高阶函数应用介绍
2013/01/10 Javascript
javascript判断chrome浏览器的方法
2014/03/26 Javascript
jquery实现根据浏览器窗口大小自动缩放图片的方法
2015/07/17 Javascript
jQuery超简单选项卡完整实例
2015/09/26 Javascript
jQuery post数据至ashx实例详解
2016/11/18 Javascript
Node.js 使用递归实现遍历文件夹中所有文件
2017/09/18 Javascript
详解使用webpack构建多页面应用
2017/12/21 Javascript
JavaScript正则表达式函数总结(常用)
2018/02/22 Javascript
vue 1.0 结合animate.css定义动画效果
2018/07/11 Javascript
微信小程序scroll-view点击项自动居中效果的实现
2020/03/25 Javascript
python通过socket查询whois的方法
2015/07/18 Python
Python 实现数据库(SQL)更新脚本的生成方法
2017/07/09 Python
Python 多进程和数据传递的理解
2017/10/09 Python
75条笑死人的知乎神回复,用60行代码就爬完了
2019/05/06 Python
FFT快速傅里叶变换的python实现过程解析
2019/10/21 Python
Python Numpy数组扩展repeat和tile使用实例解析
2019/12/09 Python
python时间与Unix时间戳相互转换方法详解
2020/02/13 Python
解析python 类方法、对象方法、静态方法
2020/08/15 Python
Python利用myqr库创建自己的二维码
2020/11/24 Python
利用css3 translate完美实现表头固定效果
2017/02/28 HTML / CSS
Stuart Weitzman美国官网:美国奢华鞋履品牌
2016/08/18 全球购物
Chain Reaction Cycles俄罗斯:世界上最大的在线自行车商店
2019/08/27 全球购物
山海经纬软件测试笔试题和面试题
2013/04/02 面试题
自考毕业自我鉴定
2014/03/18 职场文书
《新型玻璃》教学反思
2014/04/13 职场文书
关于奉献的演讲稿
2014/05/21 职场文书
高三励志标语
2014/06/05 职场文书
2014年民政工作总结
2014/11/26 职场文书
2015年清明节网上祭英烈留言寄语
2015/03/04 职场文书
学习商务礼仪心得体会
2016/01/22 职场文书
党风廉政建设心得体会(2016最新版)
2016/01/22 职场文书
小学生节约用水倡议书
2019/08/12 职场文书