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 代码优化详解
Oct 27 Python
Python UnicodeEncodeError: 'gbk' codec can't encode character 解决方法
Apr 24 Python
详解Python的Lambda函数与排序
Oct 25 Python
Django卸载之后重新安装的方法
Mar 15 Python
Tensorflow 查看变量的值方法
Jun 14 Python
Python TestCase中的断言方法介绍
May 02 Python
django-allauth入门学习和使用详解
Jul 03 Python
pycharm中显示CSS提示的知识点总结
Jul 29 Python
浅析Python 条件控制语句
Jul 15 Python
matplotlib 三维图表绘制方法简介
Sep 20 Python
python 读取、写入txt文件的示例
Sep 27 Python
Jupyter Notebook 远程访问配置详解
Jan 11 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五种设计模式小结
2011/03/23 PHP
php验证手机号码(支持归属地查询及编码为UTF8)
2013/02/01 PHP
简单解决新浪SAE无法上传文件的问题
2015/05/13 PHP
CI框架AR操作(数组形式)实现插入多条sql数据的方法
2016/05/18 PHP
php指定长度分割字符串str_split函数用法示例
2017/01/30 PHP
php 如何设置一个严格控制过期时间的session
2017/05/05 PHP
点图片上一页下一页翻页效果
2008/07/09 Javascript
有效的捕获JavaScript焦点的方法小结
2009/10/08 Javascript
Jquery ThickBox插件使用心得(不建议使用)
2010/09/08 Javascript
js location.replace与location.reload的区别
2010/09/08 Javascript
jQuery源码分析-02正则表达式 RegExp 常用正则表达式
2011/11/14 Javascript
JS获取键盘上任意按键的值(实例代码)
2013/11/12 Javascript
详解JavaScript中shift()方法的使用
2015/06/09 Javascript
倾力总结40条常见的移动端Web页面问题解决方案
2016/05/24 Javascript
全面解析jQuery $(document).ready()和JavaScript onload事件
2016/06/08 Javascript
Angular-Ui-Router+ocLazyLoad动态加载脚本示例
2017/03/02 Javascript
使用watch监听路由变化和watch监听对象的实例
2018/02/24 Javascript
vue 国际化 vue-i18n 双语言 语言包
2018/06/07 Javascript
webpack4+Vue搭建自己的Vue-cli项目过程分享
2018/08/29 Javascript
解决layui 三级联动下拉框更新时回显的问题
2019/09/03 Javascript
使用Angular material主题定义自己的组件库的配色体系
2019/09/04 Javascript
jQuery实现鼠标拖拽登录框移动效果
2020/09/13 jQuery
在Python中使用cookielib和urllib2配合PyQuery抓取网页信息
2015/04/25 Python
Tensorflow 利用tf.contrib.learn建立输入函数的方法
2018/02/08 Python
Python图像处理之图像的缩放、旋转与翻转实现方法示例
2019/01/04 Python
python读取tif图片时保留其16bit的编码格式实例
2020/01/13 Python
python连接mongodb集群方法详解
2020/02/13 Python
详解用Pytest+Allure生成漂亮的HTML图形化测试报告
2020/03/31 Python
python中使用asyncio实现异步IO实例分析
2021/02/26 Python
使用CSS3美化HTML表单的技巧演示
2016/05/17 HTML / CSS
创业大赛策划书
2014/03/01 职场文书
护理实习生带教计划
2015/01/16 职场文书
七一慰问简报
2015/07/20 职场文书
2015重阳节敬老活动总结
2015/07/29 职场文书
MybatisPlus EntityWrapper如何自定义SQL
2022/03/22 Java/Android
笔记本自带的win11如何跳过联网激活?
2022/04/20 数码科技