2010-08-23 52 views
64

我收到:关于PIL错误 - IO错误:解码器压缩不适

IOError: decoder zip not available 

当我尝试绘制图像,并保存在一个PIL JPEG。任何想法如何解决这个问题? 过去,当涉及到查看/上传图像时,PIL对我来说工作得很好。

回答

11

它可能只需要zip解码器来保存jpeg。我想我需要在OS X中按照这些步骤预览jpeg。

这可能意味着你需要:

+0

你可以下载zlib,然后用pip重新安装pil。你不需要从源代码构建它。 – leech 2014-04-02 21:15:28

+0

[Mac OS X PIL JEPG和PNG问题](https://github.com/jpcummins/jipsta.com/blob/master/posts/fixing-pil-decoder-jpeg-not-available-error.md), 这篇文章帮助我解决了PNG和JPEG问题。 (**解码器zip不可用**和**解码器jpeg不可用**) – isaacselement 2014-07-25 03:27:44

39

与zlib库的更详细的安装PIL在Ubuntu 64位:

http://obroll.com/install-python-pil-python-image-library-on-ubuntu-11-10-oneiric/

对于懒惰(学分@meawopplapt-get):

$ sudo apt-get install libjpeg-dev zlib1g-dev 
+4

枕头没有为我工作,但这一个。谢谢! – Ben 2012-10-03 13:23:27

+1

枕头也不适合我,但这确实。荣誉给你! – Neutralizer 2013-05-19 11:07:50

+2

对于懒惰: sudo apt-get install libjpeg-dev zlib1g-dev – meawoppl 2013-09-12 05:16:21

114
sudo pip uninstall PIL 
sudo pip install pillow 

^^为我修好了。

Pillow是PIL的一个分支,它与pip/setuptools兼容并获得更好的维护。 我还没有看到任何API差异。

编辑:有一个值得注意的API区别。 PIL暴露图片作为顶级命名空间,所以你可以

import Image # in PIL only 

from PIL import Image # in pillow or PIL 
  • 谢谢,Leopd!
+4

解决了我的问题!这比手动编译PIL简单得多。谢谢! – surjikal 2012-09-14 10:21:50

+7

小的API差异 - 'import Image'在PIL中工作,而不是枕头。枕头需要'从PIL导入图像' – Leopd 2012-12-10 01:19:07

+0

这也解决了这里描述的问题:http://osdir.com/ml/python-numeric-general/2009-07/msg00124.html其中numpy数组实际上并不创建一个数组,但是像取决于图像类型。我认为API的变化也很有意义...... – 2013-02-26 17:26:15

1

在Mac

sudo brew install lzlib  # installs zlib 
pip uninstall PIL 
pip install PIL 
+0

请详细说明一下,真的很难说出你在说什么 – 2014-01-01 22:18:22

+0

和'sudo brew install lzlib'只是说“brew:command not found” – Almo 2014-01-27 14:32:27

17

我遇到一个64位的Ubuntu 13.04桌面版这个问题,这是我如何解决它。

尝试重新安装PIL,并注意输出信息您重新安装后:

--------------------------------------------------------------------- 
PIL 1.1.7 SETUP SUMMARY 
-------------------------------------------------------------------- 
version  1.1.7 
platform  linux2 2.7.4 (default, Sep 26 2013, 03:20:26) 
       [GCC 4.7.3] 
-------------------------------------------------------------------- 
*** TKINTER support not available 
--- JPEG support available 
*** ZLIB (PNG/ZIP) support not available 
--- FREETYPE2 support available 
*** LITTLECMS support not available 
-------------------------------------------------------------------- 

通知,有一行:*** ZLIB (PNG/ZIP) support not available, 这意味着PIL不支持zlib已经建成了,我定它通过这样做:

首先你应该有这些软件包安装:的libjpeg-dev的libfreetype6-dev的的zlib1g-dev的

sudo apt-get install python-dev libjpeg-dev libfreetype6-dev zlib1g-dev 

# create these links, if already exists, remove it and re-link it 
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 

# reinstall PIL 
pip uninstall PIL 
pip install PIL 

这次,输出中应该有一行--- ZLIB (PNG/ZIP) support available

参考:http://jj.isgeek.net/2011/09/install-pil-with-jpeg-support-on-ubuntu-oneiric-64bits/

+0

如果看到'_imagingft.c:73:31:致命错误:freetype/fterrors。h:没有这样的文件或目录错误后,只需链接一个库:'ln -s/usr/include/freetype2/usr/include/freetype2/freetype'(我相信如果你有'apt-get install python ) – 2015-01-28 00:16:03

0

Mac OS X PIL JEPG and PNG issues(同为Linux操作系统),这个帖子帮我出与PIL既PNG和JPEG问题: 不可解码器压缩月奥德JPEG不适

确保JPEG和zlib是可用的,当你安装/重新安装PIL:

$ cd Imaging-1.1.7 
$ python setup.py build_ext -i 
$ python selftest.py 

-------------------------------------------------------------------- 
--- TKINTER support available 
--- JPEG support available 
--- ZLIB (PNG/ZIP) support available 
*** FREETYPE2 support not available 
*** LITTLECMS support not available 
-------------------------------------------------------------------- 
7

我遇到了同样的问题。在我看来,枕头和枕头('p'中的不同情况)是两种不同的包装。所以,如果你正在使用枕头,pip install pillow可能没有帮助。这是我的解决方案:

$ pip uninstall pillow 
$ pip uninstall Pillow 
$ sudo apt-get install libjpeg-dev zlib1g-dev 
$ pip install -I Pillow 

前两行是删除任何枕头或枕头包。

第三行是安装两个必需的软件包。

Forth重新安装枕头。

请注意,如果您使用的virtualenv,pip install/uninstall必须的virtualenv

+1

这对我有用 – 2015-07-06 19:20:48

1

我使用64位的Ubuntu 14.04LTS桌面版本下运行,我试图约翰尼赵的回答。

exec sudo easy_install PIL 

我得到了一个错误:

can't find freetype/fterrors.h 

,我觉得对FreeType2在/ usr/include中/

您可以通过解决这个问题:

sudo ln -s /usr/include/freetype2 /usr/include/freetype 

然后安装将成功

+0

发生这种情况是因为你已经用'apt-get install python-imaging'安装了python-imaging。如果你只是自己安装'libjpeg-dev libfreetype6-dev zlib1g-dev'而没有全部的python-imaging,你不会得到这个错误。 – 2015-01-28 00:18:08

1

原因可能是您安装了枕头而没有zlib支持。

在CentOS 7:

yum install zlib zlib-devel 
pip install Pillow --upgrade 

如果您使用的web应用程序重新启动您的Web服务器应用。

+0

这可能很明显,但如果您使用的是virtualenv,则应该在virtualenv中完成“pip install Pillow --upgrade”。 – shawn 2018-01-24 17:30:57