今天在Python运行环境的服务器弄一个有关图像处理的程序时报这样的错:
1 |
NameError: global name 'Image' is not defined |
import Image 了下,发现原来 Python 并没有自带图像处理库,需要独立安装……查了下,Python常用的图像处理库叫PIL,可以使用 pip 安装,不错~于是在 用virtualenv 里敲入 pip install PIL。
安装很快完成,于是愉悦地刷新,等待程序的通过,结果又报错:
1 |
IOError: decoder jpeg not available |
Google了下,发现通过 pip 安装的 PIL 不会安装 jpeg 的解码器……检查了下安装日志,也有这样的说明:
01 |
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
02 |
PIL 1.1 . 7 SETUP SUMMARY |
03 |
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
05 |
platform linux2 2.7 . 5 (default, Sep 18 2013 , 09 : 53 : 07 ) |
06 |
[GCC 4.1 . 2 20080704 (Red Hat 4.1 . 2 - 54 )] |
07 |
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
08 |
* * * TKINTER support not available |
09 |
* * * JPEG support not available |
10 |
* * * ZLIB (PNG / ZIP ) support not available |
11 |
* * * FREETYPE2 support not available |
12 |
* * * LITTLECMS support not available |
13 |
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
14 |
To add a missing option, make sure you have the required |
15 |
library, and set the corresponding ROOT variable in the |
JPEG support not available…… jpg都不支持,这是闹哪样……
于是只得手动安装了:
1 |
wget http: / / effbot.org / downloads / Imaging - 1.1 . 7.tar .gz |
2 |
tar xvfz Imaging - 1.1 . 7.tar .gz |
下载并解压成功之后,到解压目录,找到 Imaging-1.1.7/setup.py 这个文件,修改下面几行代码(默认TCL_ROOT的设置为NONE,这里要传到系统库的路径才行):
1 |
TCL_ROOT = "/usr/lib64/" |
2 |
JPEG_ROOT = "/usr/lib64/" |
3 |
ZLIB_ROOT = "/usr/lib64/" |
4 |
TIFF_ROOT = "/usr/lib64/" |
5 |
FREETYPE_ROOT = "/usr/lib64/" |
6 |
LCMS_ROOT = "/usr/lib64/" |
再进行安装前的检查:
1 |
python / root / nowamagic_venv / Imaging - 1.1 . 7 / setup.py build_ext - i |
检查没问题,可以执行安装了:
1 |
python / root / nowamagic_venv / Imaging - 1.1 . 7 / setup.py install |
安装成功:
01 |
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
02 |
PIL 1.1 . 7 SETUP SUMMARY |
03 |
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
05 |
platform linux2 2.7 . 5 (default, Sep 18 2013 , 09 : 53 : 07 ) |
06 |
[GCC 4.1 . 2 20080704 (Red Hat 4.1 . 2 - 54 )] |
07 |
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
08 |
* * * TKINTER support not available |
09 |
- - - JPEG support available |
10 |
- - - ZLIB (PNG / ZIP ) support available |
11 |
- - - FREETYPE2 support available |
12 |
* * * LITTLECMS support not available |
13 |
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
现在 jpg 已经被支持了,程序也执行成功,这里简单记录一下过程,方便后来者。顺便附带测试程序,用 Tornado 上传图片并生成缩略图:
05 |
class AsciiImageProcessHandler(tornado.web.RequestHandler): |
08 |
if self .request.files: |
09 |
for f in self .request.files[ 'image' ]: |
10 |
rawname = f[ 'filename' ] |
11 |
dstname = str ( int (time.time())) + '.' + rawname.split( '.' ).pop() |
12 |
thbname = "thumb_" + dstname |
16 |
tf = tempfile.NamedTemporaryFile() |
21 |
# img = Image.open(src) |
22 |
img = Image. open (tf.name) |
23 |
img.thumbnail(( 920 , 920 ),resample = 1 ) |
24 |
img.save( "./static/upload/asciiimg/" + dstname) |
27 |
img.thumbnail(( 100 , 100 ),resample = 1 ) |
28 |
img.save( "./static/upload/asciiimg_tn/" + thbname) |
- ubuntu14.04 安装PIL库出现OError: decoder jpeg not available 的解决方案
出现 OError: decoder jpeg not available 的原因是,没有装JPEG的库,同时要支持png图片的话还要装 ZLIB.FREETYPE2.LITTLECMS的库文件. 先 ...
- Python PIL : IOError: decoder jpeg not available
The first thing I check when I got this error was to check if libjpeg was installed. Lets try this s ...
- exceptions.IOError: decoder jpeg not available
1.确保安装PIL所需的系统库 yum -y install zlib yum -y install zlib-devel yum -y install libjpeg yum -y install ...
- Python 读文件:IOError: [Errno 0] Error
Windows系统下,这种情况发生在读取文件,再写入过程中出现. 原因是读完文件后python不知道当前文件位置在哪里. 方法一是:在关闭文件前只做读或者写一种操作. 方法二是:在写入文件前使用fil ...
- Python,PIL压缩裁剪图片
自己写了用来压缩 DC 照片的,批量处理整目录文件,非常方便.需要安装 PIL #!/usr/bin/env python import Image import os import os.path ...
- Python图像处理库:PIL中Image,ImageDraw等基本模块介绍
Python图像处理库:PIL中Image,ImageDraw等基本模块介绍 标签: 图像处理PILPYTHON 2016-08-19 10:58 461人阅读 评论(0) 收藏 举报 分类: 其他 ...
- Python:IOError: image file is truncated 的解决办法
代码如下: #coding:utf-8 from PIL import Image import pytesseract def test(): im = Image.open(r"pic. ...
- Python图像处理库:Pillow 初级教程
Python图像处理库:Pillow 初级教程 2014-09-14 翻译 http://pillow.readthedocs.org/en/latest/handbook/tutorial.html ...
- python PIL 图像处理操作
python PIL 图像处理 # 导入Image库 import Image # 读取图片 im = Image.open("1234.jpg") # 显示图片 im.show( ...
随机推荐
- spark 启动job的流程分析
从WordCount開始分析 编写一个样例程序 编写一个从HDFS中读取并计算wordcount的样例程序: packageorg.apache.spark.examples importorg.ap ...
- APP安全环节缺失,手游运营商怎样应对APP破解困境
2013年手游行业的规模与收入均实现了大幅增长,发展势头强劲.然而,在手游快速发展的同一时候,因为监管.审核等方面存在着漏洞,手机游戏软件被破解后注入恶意代码.盗取用户財产.窃取用户设备信息的现象屡见 ...
- webservice传递特殊字符时的解决的方法
webservice soap报文是xml格式交互的,当中针对特殊字符传递无法解析,导致数据处理失败. 解决的方法例如以下: 1.在发送报文之前,针对报文进行base64转码,转义后避免报文中含有特殊 ...
- [Reactive Programming] RxJS dynamic behavior
This lesson helps you think in Reactive programming by explaining why it is a beneficial paradigm fo ...
- 覆盖equals的时候总要覆盖hashCode
import java.util.HashMap; public class Student { private String name ; private String id; public Stu ...
- Android(java)学习笔记213:开源框架post和get方式提交数据(qq登录案例)
1.前面提到Http的get/post方式 . HttpClient方式,实际工作的时候不常用到,因为这些方式编写代码是很麻烦的 2.Android应用会经常使用http协议进行传输,网上会有很完善 ...
- dede 最近一天发布的文章标题前加hot
{dede:list pagesize ='15'} <!-- 模板1 --> <div class="news_list tp_a setp1"> < ...
- hibernate中使用HQL进行数据库查询
1.写的规则比较简单,我讲一下,如图Station这个不是数据库中的表,而是entity包中的类名Station,可以省略 select * 2.返回的类型自动转化为String类型,不用你自己再转化 ...
- MVC打包压缩JS&CSS文件调试时过滤了一些文件
BundleTable.这个确实是比较好用,打包并压缩了CSS,使之加载时减少流量. 但是在调试的时候会疑问为何有很多JS,CSS文件无法打包,其实是因为调试时VS自动过滤了如下文件: 后台跟踪了 ...
- c# 操作.config中AppSettings配置节
ConfigurationSettings.AppSettings[key].ToString(); 这种方式很眼熟吧? 不过这种方式基本过时了,虽然还能用. 微软建议采用ConfigurationM ...