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 获取本机ip地址的两个方法
Feb 25 Python
浅析Python中的多条件排序实现
Jun 07 Python
python 实现判断ip连通性的方法总结
Apr 22 Python
python自动重试第三方包retrying模块的方法
Apr 24 Python
对python中矩阵相加函数sum()的使用详解
Jan 28 Python
Python Selenium 之关闭窗口close与quit的方法
Feb 13 Python
如何运行.ipynb文件的图文讲解
Jun 27 Python
django中forms组件的使用与注意
Jul 08 Python
Django缓存系统实现过程解析
Aug 02 Python
Django错误:TypeError at / 'bool' object is not callable解决
Aug 16 Python
Python paramiko 模块浅谈与SSH主要功能模拟解析
Feb 29 Python
python实现AHP算法的方法实例(层次分析法)
Sep 09 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 注释规范
2012/03/29 PHP
初识通用数据库操作类――前端easyui-datagrid,form(php)
2015/07/31 PHP
Smarty分页实现方法完整实例
2016/05/11 PHP
PHP基于自定义类随机生成姓名的方法示例
2017/08/05 PHP
面向对象的javascript(笔记)
2009/10/06 Javascript
JQuery slideshow的一个小问题(如何发现及解决过程)
2013/02/06 Javascript
简单的代码实现jquery定时器
2013/11/17 Javascript
jQuery拖拽 & 弹出层 介绍与示例
2013/12/27 Javascript
JS的数组迭代方法
2015/02/05 Javascript
Javascript的表单验证-初识正则表达式
2016/03/18 Javascript
JS数组去掉重复数据只保留一条的实现代码
2016/08/11 Javascript
基于JS实现发送短信验证码后的倒计时功能(无视页面刷新,页面关闭不进行倒计时功能)
2016/09/02 Javascript
AngularJS实现自定义指令与控制器数据交互的方法示例
2017/06/19 Javascript
JS实现搜索关键词的智能提示功能
2017/07/07 Javascript
jquery ajaxfileupload异步上传插件
2017/11/21 jQuery
js尾调用优化的实现
2019/05/23 Javascript
vue实现PC端录音功能的实例代码
2019/06/05 Javascript
JS实现密码框效果
2020/09/10 Javascript
vue 判断两个时间插件结束时间必选大于开始时间的代码
2020/11/04 Javascript
浅谈Vue使用Elementui修改默认的最快方法
2020/12/05 Vue.js
python中getattr函数使用方法 getattr实现工厂模式
2014/01/20 Python
python 如何快速找出两个电子表中数据的差异
2017/05/26 Python
Python装饰器原理与简单用法实例分析
2018/04/29 Python
解决win64 Python下安装PIL出错问题(图解)
2018/09/03 Python
浅谈python函数调用返回两个或多个变量的方法
2019/01/23 Python
Python在Matplotlib图中显示中文字体的操作方法
2019/07/29 Python
html5实现的便签特效(实战分享)
2013/11/29 HTML / CSS
HTML5 Web缓存和运用程序缓存(cookie,session)
2018/01/11 HTML / CSS
详解HTML5如何使用可选样式表为网站或应用添加黑暗模式
2020/04/07 HTML / CSS
Free People中国官网:波西米亚风格女装服饰
2016/08/30 全球购物
Wedgwood美国官网:英国骨瓷,精美礼品及家居装饰
2018/02/17 全球购物
单位承诺书格式
2014/05/21 职场文书
学习焦裕禄精神践行三严三实心得体会
2014/10/13 职场文书
2015年销售员工作总结范文
2015/04/07 职场文书
花田少年史观后感
2015/06/16 职场文书
jquery插件实现搜索历史
2021/04/24 jQuery