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之批量创建文件的实例讲解
May 10 Python
Flask之flask-script模块使用
Jul 26 Python
pyspark.sql.DataFrame与pandas.DataFrame之间的相互转换实例
Aug 02 Python
python判断列表的连续数字范围并分块的方法
Nov 16 Python
对Python3+gdal 读取tiff格式数据的实例讲解
Dec 04 Python
Flask模板引擎Jinja2使用实例
Apr 23 Python
pycharm软件实现设置自动保存操作
Jun 08 Python
详解基于python的图像Gabor变换及特征提取
Oct 26 Python
python 基于Apscheduler实现定时任务
Dec 15 Python
python字典按照value排序方法
Dec 28 Python
python 机器学习的标准化、归一化、正则化、离散化和白化
Apr 16 Python
关于Python中进度条的六个实用技巧分享
Apr 05 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获取远程图片的两种 CURL方式和sockets方式获取远程图片
2011/11/07 PHP
PHP filter_var() 函数 Filter 函数
2012/04/25 PHP
PHP实现获取域名的方法小结
2014/11/05 PHP
php生成PDF格式文件并且加密
2015/06/22 PHP
php实现的微信红包算法分析(非官方)
2015/09/25 PHP
PHP简单读取PDF页数的实现方法
2016/07/21 PHP
Yii2实现增删改查后留在当前页的方法详解
2017/01/13 PHP
layui数据表格自定义每页条数limit设置
2019/10/26 PHP
用js替换除数字与逗号以外的所有字符的代码
2014/06/07 Javascript
JQuery查找DOM节点的方法
2015/06/11 Javascript
jquery validate demo 基础
2015/10/29 Javascript
APP中javascript+css3实现下拉刷新效果
2016/01/27 Javascript
JS三级可折叠菜单实现方法
2016/02/29 Javascript
个人网站留言页面(前端jQuery编写、后台php读写MySQL)
2016/05/03 Javascript
jQuery EasyUi 验证功能实例解析
2017/01/06 Javascript
[js高手之路]图解javascript的原型(prototype)对象,原型链实例
2017/08/28 Javascript
小程序如何获取多个formId实现详解
2019/09/20 Javascript
jquery弹窗时禁止body滚动条滚动的例子
2019/09/21 jQuery
jQuery实现二级导航菜单的示例
2020/09/30 jQuery
微信小程序实现天气预报功能(附源码)
2020/12/10 Javascript
Python读取键盘输入的2种方法
2015/06/16 Python
Python基于Socket实现的简单聊天程序示例
2017/08/05 Python
解决python中使用plot画图,图不显示的问题
2018/07/04 Python
Django 反向生成url实例详解
2019/07/30 Python
PYTHON绘制雷达图代码实例
2019/10/15 Python
django orm模块中的 is_delete用法
2020/05/20 Python
HTML5+WebSocket实现多文件同时上传的实例
2016/12/29 HTML / CSS
Big Green Smile法国:领先的英国有机和天然产品在线商店
2021/01/02 全球购物
一些Unix笔试题和面试题
2012/09/25 面试题
abstract class和interface有什么区别
2013/08/04 面试题
销售经理工作职责范文
2013/12/03 职场文书
大班幼儿评语大全
2014/04/30 职场文书
创建青年文明号材料
2014/05/09 职场文书
党员查摆剖析材料
2014/10/10 职场文书
信息技术课教学反思
2016/02/23 职场文书
MySQL中distinct与group by之间的性能进行比较
2021/05/26 MySQL