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 django集成cas验证系统
Jul 14 Python
python实现同时给多个变量赋值的方法
Apr 30 Python
Python在Console下显示文本进度条的方法
Feb 14 Python
利用pyinstaller将py文件打包为exe的方法
May 14 Python
浅谈python中get pass用法
Mar 19 Python
Python 合并多个TXT文件并统计词频的实现
Aug 23 Python
django-rest-swagger的优化使用方法
Aug 29 Python
python实现小世界网络生成
Nov 21 Python
使用Tensorflow-GPU禁用GPU设置(CPU与GPU速度对比)
Jun 30 Python
Pytho爬虫中Requests设置请求头Headers的方法
Sep 22 Python
python中翻译功能translate模块实现方法
Dec 17 Python
python中time包实例详解
Feb 02 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
地摊中国 - 珍藏老照片
2020/08/18 杂记
多重?l件?合查?(一)
2006/10/09 PHP
用php实现让页面只能被百度gogole蜘蛛访问的方法
2009/12/29 PHP
Aster vs Newbee BO5 第一场2.19
2021/03/10 DOTA
IE6中使用position导致页面变形的解决方案(js代码)
2011/01/09 Javascript
js onkeypress与onkeydown 事件区别详细说明
2012/12/13 Javascript
Javascript 按位与赋值运算符 (&=)使用介绍
2014/02/04 Javascript
jQuery获取对象简单实现方法小结
2014/10/30 Javascript
javascript实现可全选、反选及删除表格的方法
2015/05/15 Javascript
jquery实现可点击伸缩与展开的菜单效果代码
2015/08/31 Javascript
Web Uploader文件上传插件使用详解
2016/05/10 Javascript
Jquery组件easyUi实现手风琴(折叠面板)示例
2016/08/23 Javascript
bootstrap fileinput完整实例分享
2016/11/08 Javascript
实现easyui的datagrid导出为excel的示例代码
2016/11/10 Javascript
Angular2搜索和重置按钮过场动画
2017/05/24 Javascript
基于angular实现模拟微信小程序swiper组件
2017/06/11 Javascript
快速解决处理后台返回json数据格式的问题
2018/08/07 Javascript
vue实现局部刷新的实现示例
2019/04/16 Javascript
小程序实现订单倒计时功能
2019/04/23 Javascript
剖析Python的Twisted框架的核心特性
2016/05/25 Python
python实现机械分词之逆向最大匹配算法代码示例
2017/12/13 Python
python打包压缩、读取指定目录下的指定类型文件
2018/04/12 Python
Django实现一对多表模型的跨表查询方法
2018/12/18 Python
Python中pymysql 模块的使用详解
2019/08/12 Python
python实现登录密码重置简易操作代码
2019/08/14 Python
在python中做正态性检验示例
2019/12/09 Python
解决IDEA 的 plugins 搜不到任何的插件问题
2020/05/04 Python
python实现xml转json文件的示例代码
2020/12/30 Python
使用canvas压缩图片大小的方法示例
2019/08/02 HTML / CSS
乐高奥地利官方商店:LEGO Shop AT
2019/07/16 全球购物
Timberland法国官网:购买靴子、鞋子、衣服、夹克和配饰
2019/11/30 全球购物
int *p=NULL和*p= NULL有什么区别
2014/10/23 面试题
品管员岗位职责
2013/11/10 职场文书
运动会稿件200字
2014/02/07 职场文书
2014国庆黄金周超市促销活动方案
2014/09/21 职场文书
2015年全国科普日活动总结
2015/03/23 职场文书