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 相关文章推荐
使用Mixin设计模式进行Python编程的方法讲解
Jun 21 Python
python爬虫入门教程--HTML文本的解析库BeautifulSoup(四)
May 25 Python
python基础教程项目五之虚拟茶话会
Apr 02 Python
用pyqt5 给按钮设置图标和css样式的方法
Jun 24 Python
PYQT5实现控制台显示功能的方法
Jun 25 Python
python opencv对图像进行旋转且不裁剪图片的实现方法
Jul 09 Python
pycharm解决关闭flask后依旧可以访问服务的问题
Apr 03 Python
哈工大自然语言处理工具箱之ltp在windows10下的安装使用教程
May 07 Python
python seaborn heatmap可视化相关性矩阵实例
Jun 03 Python
python 下载m3u8视频的示例代码
Nov 11 Python
python FTP编程基础入门
Feb 27 Python
PyQt 如何创建自定义QWidget
Mar 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
Yii实现自动加载类地图的方法
2015/04/01 PHP
php实现在站点里面添加邮件发送的功能
2020/04/28 PHP
详解php几行代码实现CSV格式文件输出
2017/07/01 PHP
Add a Formatted Table to a Word Document
2007/06/15 Javascript
js实现鼠标拖动图片并兼容IE/FF火狐/谷歌等主流浏览器
2013/06/06 Javascript
jQuery遍历对象、数组、集合实例
2014/11/08 Javascript
一款简单的jQuery图片标注效果附源码下载
2016/03/22 Javascript
Bootstrap面板学习使用
2017/02/09 Javascript
vue引入新版 vue-awesome-swiper插件填坑问题
2018/01/25 Javascript
Vue-不允许嵌套式的渲染方法
2018/09/13 Javascript
swiper在vue项目中loop循环轮播失效的解决方法
2018/09/15 Javascript
使用angularjs.foreach时return的问题解决
2018/09/30 Javascript
在vue中使用G2图表的示例代码
2019/03/19 Javascript
Electron vue的使用教程图文详解
2019/07/05 Javascript
Vue 实现显示/隐藏层的思路(加全局点击事件)
2019/12/31 Javascript
Vue使用screenfull实现全屏效果
2020/09/17 Javascript
JavaScript实现移动小精灵的案例代码
2020/12/12 Javascript
[03:55]显微镜下的DOTA2特别篇——430灰烬之灵神级操作
2014/06/24 DOTA
[01:00:59]VP VS VG Supermajor小组赛胜者组第二轮 BO3第二场 6.2
2018/06/03 DOTA
[01:11:11]Alliance vs RNG 2019国际邀请赛淘汰赛 败者组BO1 8.20.mp4
2020/07/19 DOTA
python操作MySQL数据库具体方法
2013/10/28 Python
Python使用asyncio包处理并发详解
2017/09/09 Python
Python numpy生成矩阵、串联矩阵代码分享
2017/12/04 Python
python中正则表达式与模式匹配
2019/05/07 Python
Django 拆分model和view的实现方法
2019/08/16 Python
pytorch 常用线性函数详解
2020/01/15 Python
Python文件名匹配与文件复制的实现
2020/12/11 Python
关于解决iframe标签嵌套问题的解决方法
2020/03/04 HTML / CSS
世界顶级户外运动品牌折扣网站:LeftLane Sports
2019/06/12 全球购物
Yahoo-PHP面试题2
2014/12/06 面试题
艺术设计专业个人求职信范文
2013/12/11 职场文书
《奇妙的国际互联网》 教学反思
2014/02/25 职场文书
优秀实习生主要事迹
2014/05/29 职场文书
党委班子剖析材料
2014/08/21 职场文书
刑事辩护授权委托书范本
2014/10/17 职场文书
js面向对象编程OOP及函数式编程FP区别
2022/07/07 Javascript