今天在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 --------------------------------------------------------------------
04 version       1.1.7
05 platform      linux2 2.7.5 (default, Sep 18 201309: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
16 setup.py script.

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 --------------------------------------------------------------------
04 version       1.1.7
05 platform      linux2 2.7.5 (default, Sep 18 201309: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 上传图片并生成缩略图:

01 import time
02 import tempfile
03 import Image
04  
05 class AsciiImageProcessHandler(tornado.web.RequestHandler):
06     def post(self):
07  
08         if self.request.files:
09             for in self.request.files['image']:
10                 rawname = f['filename']
11                 dstname =str(int(time.time()))+'.'+rawname.split('.').pop()
12                 thbname = "thumb_"+dstname
13  
14                 self.write( dstname )
15  
16                 tf = tempfile.NamedTemporaryFile()
17                 tf.write(f['body'])
18                 tf.seek(0)
19  
20                 # create normal file
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)
25  
26                 # create thumb file
27                 img.thumbnail((100,100),resample=1)
28                 img.save("./static/upload/asciiimg_tn/"+thbname)
29   
30                 tf.close()

python PIL except: IOError: decoder jpeg not available的更多相关文章

  1. ubuntu14.04 安装PIL库出现OError: decoder jpeg not available 的解决方案

    出现 OError: decoder jpeg not available 的原因是,没有装JPEG的库,同时要支持png图片的话还要装 ZLIB.FREETYPE2.LITTLECMS的库文件. 先 ...

  2. 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 ...

  3. exceptions.IOError: decoder jpeg not available

    1.确保安装PIL所需的系统库 yum -y install zlib yum -y install  zlib-devel yum -y install libjpeg yum -y install ...

  4. Python 读文件:IOError: [Errno 0] Error

    Windows系统下,这种情况发生在读取文件,再写入过程中出现. 原因是读完文件后python不知道当前文件位置在哪里. 方法一是:在关闭文件前只做读或者写一种操作. 方法二是:在写入文件前使用fil ...

  5. Python,PIL压缩裁剪图片

    自己写了用来压缩 DC 照片的,批量处理整目录文件,非常方便.需要安装 PIL #!/usr/bin/env python import Image import os import os.path ...

  6. Python图像处理库:PIL中Image,ImageDraw等基本模块介绍

    Python图像处理库:PIL中Image,ImageDraw等基本模块介绍 标签: 图像处理PILPYTHON 2016-08-19 10:58 461人阅读 评论(0) 收藏 举报  分类: 其他 ...

  7. Python:IOError: image file is truncated 的解决办法

    代码如下: #coding:utf-8 from PIL import Image import pytesseract def test(): im = Image.open(r"pic. ...

  8. Python图像处理库:Pillow 初级教程

    Python图像处理库:Pillow 初级教程 2014-09-14 翻译 http://pillow.readthedocs.org/en/latest/handbook/tutorial.html ...

  9. python PIL 图像处理操作

    python PIL 图像处理 # 导入Image库 import Image # 读取图片 im = Image.open("1234.jpg") # 显示图片 im.show( ...

随机推荐

  1. jquery做个日期选择适用于手机端

    第一步:做个 文本框用于显示年月日的 第二步:点击文本框触发bootstrap模态框并显示 第三步:我是建一个外部js页面写的 js中获得当前时间是年份和月份,形如:201208       //获取 ...

  2. cmake 手册系列

    http://www.cnblogs.com/coderfenghc/archive/2012/06/16/CMake_ch_01.html

  3. Qt的皮肤设计(Style Sheet)

      Qt的皮肤设计,也可以说是对Qt应用程序的界面美化,Qt使用了一种类CSS的样式规则QSS. 一.Style Sheet的应用 1.直接在程序代码中设置样式,利用setStyleSheet()方法 ...

  4. php mysqli注意问题

    今天写了这个一段代码 function ip_get_method($action , $device){ if($action != 'search'){ request_die(false,'un ...

  5. 21、javascript 基础

    Javascript Javascript 是一种嵌入到HTML文档的脚本语言,由浏览器解释和执行,无需编译. Javascript 是大小写敏感的,大写字母与小写字母不同. 使用“:”分号来分割每一 ...

  6. WPF Binding值转换器ValueConverter使用简介(一)

    WPF.Silverlight及Windows Phone程序开发中往往需要将绑定的数据进行特定转换,比如DateTime类型的时间转换为yyyyMMdd的日期,再如有一个值是根据另外多组值的不同而异 ...

  7. 在Iframe框架下如何跳转到登录界面

    在Iframe框架下跳转到登录界面总会跳到子界面中,类似于下图 试用Respon.Redirect()不行, 用Js函数,但我跳转代码都是写在cs文件中的,用Respose.write(),js函数根 ...

  8. .net excel利用NPOI导入oracle

    1.链接数据库 引用System.Data.OracleClient: //数据库链接字符串   Data Source如:192.168.5.153:1521/orcl string linkStr ...

  9. 分布式发布订阅消息系统 Kafka 架构设计[转]

    分布式发布订阅消息系统 Kafka 架构设计 转自:http://www.oschina.net/translate/kafka-design 我们为什么要搭建该系统 Kafka是一个消息系统,原本开 ...

  10. 工欲善其事必先利其器之Xcode高效插件和舒适配色

    功能强大的Xcode再配上高效的插件,必会让你的开发事半功倍.直接进入正题. Xcode插件安装方式: 1.github下载插件然后用xcode打开运行一遍,然后重启xcode. 2.安装插件管理Al ...