我编写了以下代码来从目录中读取jpegs然后调整它们的大小。
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 :(得分:3)
如果您想诊断为什么PIL在构建时没有找到libjpeg并正确使用它,我们可以......
但是PIL实际上是一个死机项目,它在4年前不存在的系统上配置有很多问题(比如64位Ubuntu 13.10)。使用现代setuptools
/ pip
时也存在一些问题,而且关于构建过程的文档很少。它的最后一个版本(1.1.6)从未分发给PyPI。
Pillow是“PIL的现代分支”,它从PIL 1.1.6开始,将其修复为正确执行setuptools
,使其适用于每个主要操作系统,将其移植到Python 3.x,并修复了各种错误。
因此,除非您确实需要PIL 1.1.5或1.1.6,否则请使用Pillow。这应该是这么简单:
$ pip uninstall PIL
$ pip install pillow
除非您通过二进制轮安装,否则该安装命令的输出应该为您提供一个很好的表,其中列出了哪些功能并且未编译...但是如果您有发行版的标准libjpeg
和{{1}包裹,我愿意打赌它会被发现。