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 15 Python
python requests.post带head和body的实例
Jan 02 Python
用Python写一个自动木马程序
Sep 17 Python
python模块hashlib(加密服务)知识点讲解
Nov 25 Python
python画图常规设置方式
Mar 05 Python
Django admin 实现search_fields精确查询实例
Mar 30 Python
如何搭建pytorch环境的方法步骤
May 06 Python
python实现逢七拍腿小游戏的思路详解
May 26 Python
python初步实现word2vec操作
Jun 09 Python
python3读取文件指定行的三种方法
May 24 Python
pytorch 预训练模型读取修改相关参数的填坑问题
Jun 05 Python
python数据可视化使用pyfinance分析证券收益示例详解
Nov 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加密解密字符串汇总
2015/04/26 PHP
php curl 获取https请求的2种方法
2015/04/27 PHP
Docker 如何布置PHP开发环境
2016/06/21 PHP
PHP生成word文档的三种实现方式
2016/11/14 PHP
深入解析Laravel5.5中的包自动发现Package Auto Discovery
2017/09/13 PHP
PHP共享内存使用与信号控制实例分析
2018/05/09 PHP
Laravel框架数据库迁移操作实例详解
2020/04/06 PHP
php生成短网址/短链接原理和用法实例分析
2020/05/29 PHP
FullCalendar日历插件应用之数据展现(一)
2015/12/23 Javascript
AngularJS实现标签页的两种方式
2016/09/05 Javascript
ES6新特性五:Set与Map的数据结构实例分析
2017/04/21 Javascript
jQuery实现可兼容IE6的遮罩功能详解
2017/09/19 jQuery
react组件从搭建脚手架到在npm发布的步骤实现
2019/01/09 Javascript
js删除数组中某几项的方法总结
2019/01/16 Javascript
vue 中使用 watch 出现了如下的报错的原因分析
2019/05/21 Javascript
node.js使用net模块创建服务器和客户端示例【基于TCP协议】
2020/02/14 Javascript
python基础教程之实现石头剪刀布游戏示例
2014/02/11 Python
python爬取51job中hr的邮箱
2016/05/14 Python
python subprocess 杀掉全部派生的子进程方法
2017/01/16 Python
对Python中type打开文件的方式介绍
2018/04/28 Python
python和mysql交互操作实例详解【基于pymysql库】
2019/06/04 Python
Python3 翻转二叉树的实现
2019/09/30 Python
python中Lambda表达式详解
2019/11/20 Python
Python3.6 中的pyinstaller安装和使用教程
2020/03/16 Python
Python如何批量获取文件夹的大小并保存
2020/03/31 Python
python中怎么表示空值
2020/06/19 Python
Python如何创建装饰器时保留函数元信息
2020/08/07 Python
H5 meta小结(前端必看篇)
2016/08/24 HTML / CSS
KIKO MILANO英国官网:意大利知名化妆品和护肤品品牌
2017/09/25 全球购物
材料物理专业个人求职信
2013/12/15 职场文书
中学教师培训制度
2014/01/31 职场文书
爱心募捐感谢信
2015/01/22 职场文书
团员年度个人总结
2015/02/26 职场文书
推广普通话的宣传语
2015/07/13 职场文书
python用海龟绘图写贪吃蛇游戏
2021/06/18 Python
十大最强飞行系宝可梦,BUG燕上榜,第二是飞行系王者
2022/03/18 日漫