2014-01-24 40 views
3

我写了下面的代码从目录中读取jpeg,然后调整它们的大小。在调整图像大小时解码器JPEG错误

for dirs, path, files in os.walk("wallet_training/"): 
    for filename in files: 
      I=Image.open(os.path.join("wallet_training",filename)) 
      I=I.resize((256,256), Image.ANTIALIAS) 
      print I 

但是它引发以下错误:

File "test.py", line 31, in <module> 
I=I.resize((256,256), Image.ANTIALIAS) 
File "/usr/local/lib/python2.7/dist-packages/PIL/Image.py", line 1290, in resize 
self.load() 
File "/usr/local/lib/python2.7/dist-packages/PIL/ImageFile.py", line 189, in load 
d = Image._getdecoder(self.mode, d, a, self.decoderconfig) 
File "/usr/local/lib/python2.7/dist-packages/PIL/Image.py", line 385, in _getdecoder 
raise 
IOError("decoder %s not available" % decoder_name) 

如果不调整大小功能使用的代码似乎是工作。 预先感谢您。

P.S.我检查了另一个问题,我的libjpeg-dev的安装和它仍然没有工作

+0

你似乎缺少PIL。你在运行什么系统? 'pip install -I PIL'。 – 2014-01-24 21:01:32

+0

他没有失踪PIL;他只是缺少PIL的JPEG支持。 – abarnert

+0

您使用的是PIL/Pillow的版本?如果你还在使用PIL,有什么理由不换成Pillow?如果你正在安装一个二进制文件,你可以通过'pip'来安装吗?你在哪个平台/发行版/版本上,以及你是如何安装'libjpeg-dev'的?你确定位宽是否匹配(例如,32位'libjpeg-dev'对64位Python和PIL无帮助)? – abarnert

回答

2

如果要诊断为什么PIL不是在编译时发现的libjpeg和正确使用它,我们可以......

但PIL是实际上是一个死了的项目,并且它在4年前不存在的系统配置上存在很多问题(如64位Ubuntu 13.10)。它在使用现代的setuptools/pip时也有一些问题,并且关于构建过程的文档很少。它的最后一个版本(1.1.6)从未分发到PyPI。

Pillow是,它开始了与PIL 1.1.6“PIL的现代叉”,固定起来做setuptools得当,得到它的工作在每一个主要的操作系统,它移植到Python 3.x和固定所有种类的错误。

因此,除非您确实需要PIL 1.1.5或1.1.6,否则请使用Pillow。这应该是如此简单:

$ pip uninstall PIL 
$ pip install pillow 

除非你通过二进制轮安装,从输出install命令应该给你一个很好的表,它的特点是在不编译...但如果你有你发行人的标准libjpeglibjpeg-dev包,我敢打赌,它会被发现。

+0

我已经开始枕头了。谢谢。 –

相关问题