2010-08-23 51 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