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 06 Python
python获取本地计算机名字的方法
Apr 29 Python
python简单实现基数排序算法
May 16 Python
python机器学习理论与实战(一)K近邻法
Jan 28 Python
Python测试网络连通性示例【基于ping】
Aug 03 Python
解决安装python库时windows error5 报错的问题
Oct 21 Python
实例讲解Python中浮点型的基本内容
Feb 11 Python
python 计算数据偏差和峰度的方法
Jun 29 Python
Python破解BiliBili滑块验证码的思路详解(完美避开人机识别)
Feb 17 Python
tensorflow常用函数API介绍
Apr 19 Python
python模拟哔哩哔哩滑块登入验证的实现
Apr 24 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
使用zend studio for eclipse不能激活代码提示功能的解决办法
2009/10/11 PHP
Sorting Array Values in PHP(数组排序)
2011/09/15 PHP
基于Discuz security.inc.php代码的深入分析
2013/06/03 PHP
yii实现使用CUploadedFile上传文件的方法
2015/12/28 PHP
PHP用PDO如何封装简单易用的DB类详解
2017/07/30 PHP
客户端脚本中常常出现的一些问题和调试技巧
2007/01/09 Javascript
Convert Seconds To Hours
2007/06/16 Javascript
某页码显示的helper 少量调整,另附js版
2010/09/12 Javascript
Js参数值中含有单引号或双引号问题的解决方法
2013/11/06 Javascript
点击弹出层效果&弹出窗口后网页背景变暗效果的实现代码
2014/02/10 Javascript
jquery实现瀑布流效果分享
2014/03/26 Javascript
js分页代码分享
2014/04/28 Javascript
ES6中Math对象新增的方法实例详解
2017/04/25 Javascript
ES6 如何改变JS内置行为的代理与反射
2019/02/11 Javascript
多线程爬虫批量下载pcgame图片url 保存为xml的实现代码
2013/01/17 Python
python使用xauth方式登录饭否网然后发消息
2014/04/11 Python
Django中对数据查询结果进行排序的方法
2015/07/17 Python
python 简单的多线程链接实现代码
2016/08/28 Python
Flask框架的学习指南之制作简单blog系统
2016/11/20 Python
Django中间件拦截未登录url实例详解
2019/09/03 Python
python实现的读取网页并分词功能示例
2019/10/29 Python
使用 Supervisor 监控 Python3 进程方式
2019/12/05 Python
python3连接mysql获取ansible动态inventory脚本
2020/01/19 Python
使用Python实现音频双通道分离
2020/12/25 Python
css3使网页、图片变成灰色兼容大多数浏览器
2014/07/02 HTML / CSS
中国跨境在线时尚零售商:Bellelily
2018/04/06 全球购物
优衣库美国官网:UNIQLO美国
2018/04/14 全球购物
联想印度官方网上商店:Lenovo India
2019/08/24 全球购物
英国行业制服供应商:Alexandra
2019/09/14 全球购物
年终考核评语
2014/01/19 职场文书
迎新晚会邀请函
2014/02/01 职场文书
水电工岗位职责
2014/02/12 职场文书
优秀应届毕业生自荐书
2014/06/29 职场文书
销售督导岗位职责
2015/04/10 职场文书
七年级作文(600字3篇)
2019/09/24 职场文书
微信小程序结合ThinkPHP5授权登陆后获取手机号
2021/11/23 PHP