2010-08-23 13 views
64

Sto ottenendo il:sull'errore PIL - IOError: decoder zip non disponibile

IOError: decoder zip not available 

quando provo a disegnare un'immagine e salvare in un jpeg in PIL. Qualche idea su come risolvere questo? PIL ha funzionato bene per me in passato, quando si tratta di visualizzare/caricare immagini.

risposta

11

Probabilmente serve solo il decodificatore zip per salvare il file jpeg. Penso di aver bisogno di seguire questi passaggi in OS X per visualizzare l'anteprima di jpegs.

Probabilmente significa che è necessario:

+0

È possibile scaricare lo zlib e quindi reinstallare solo pil con pip. Non dovresti aver bisogno di costruirlo dal sorgente. – leech

+0

[Problemi JEPG e PNG di Mac OS X PIL] (https://github.com/jpcummins/jipsta.com/blob/master/posts/fixing-pil-decoder-jpeg-not-available-error.md), Questo post mi aiuta a risolvere entrambi i problemi PNG e JPEG con PIL. (** decoder zip non disponibile ** e ** decoder jpeg non disponibile **) – isaacselement

39

Più PIL dettaglio l'installazione con la libreria zlib in Ubuntu a 64 bit:

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

per i pigri (crediti a @meawoppl per la apt-get):

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

cuscino non ha funzionato per me, ma questo ha fatto. Grazie! Il cuscino – Ben

+1

non ha funzionato anche per me, ma così è stato. Complimenti a te! – Neutralizer

+2

Per i pigri: sudo apt-get install libjpeg-dev zlib1g-dev – meawoppl

114
sudo pip uninstall PIL 
sudo pip install pillow 

^^ risolto per me.

Pillow è una forcella di PIL che è compatibile con pip/setuptools e ottiene una manutenzione leggermente migliore. Non ho ancora visto alcuna differenza API.

Modifica: C'è una differenza API notevole. espone PIL immagine come uno spazio dei nomi di alto livello, quindi è possibile

import Image # in PIL only 

ma

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

risolto il mio problema! Questo è molto più semplice della compilazione manuale del PIL. Grazie! – surjikal

+7

Differenza API piccola - 'Importa immagine 'funziona in PIL, non cuscino. pillow richiede 'from PIL import Image' – Leopd

+0

Questo risolve anche il problema descritto qui: http://osdir.com/ml/python-numeric-general/2009-07/msg00124.html dove array numpy non crea effettivamente una matrice , ma qualcosa come a seconda del tipo di immagine. Penso che anche la modifica dell'API abbia molto senso ... –

1

su Mac

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

Per favore, elabora ancora Qual è davvero difficile dire quello che stai dicendo: –

+0

e' sudo brew install lzlib' dice solo "brew: comando non trovato" sul mio – Almo

17

ho incontrato questo problema su un a 64 bit di Ubuntu 13.04 versione desktop ed ecco come ho risolto esso.

provare a reinstallare PIL, e prestare attenzione alle informazioni di uscita dopo aver reinstallato:

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

notare che c'è una linea: *** ZLIB (PNG/ZIP) support not available, che significa PIL sono state costruite senza il supporto zlib, e mi fissa è in questo modo:

prima si dovrebbe avere questi pacchetti installare: 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 

Questa volta, dovrebbe esserci una riga --- ZLIB (PNG/ZIP) support available nell'output.

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

+0

Se vedi un '_imagingft.c: 73: 31: errore fatale: freetype/fterrors.h: Nessun errore di questo tipo di file o directory dopo ciò basta collegare una libreria in più: 'ln -s/usr/include/freetype2/usr/include/freetype2/freetype' (credo che questo accada se hai' apt-get install python -imaging') –

2

Il modo in cui ho fissato questo su OS X Mavericks è stato in questo modo:

Installare birra:

http://brew.sh/

Installare pip:

http://www.pip-installer.org/en/latest/installing.html

Con quelli in atto, si può fare questo:

sudo brew install lzlib  # installs zlib 
pip uninstall PIL 
pip install --no-index -f http://dist.plone.org/thirdparty/ -U PIL 

Dopo di che, stava funzionando benissimo. Per una spiegazione della terza linea, controllare questa risposta:

https://stackoverflow.com/a/2486396/290072

0

Mac OS X PIL JEPG and PNG issues (stesso per il sistema operativo Linux), questo post mi aiuta fuori di entrambe le questioni PNG e JPEG con PIL: decoder zip non disponibile e dicembre oder jpeg non disponibile

Assicurarsi JPEG ZLIB sono disponibili, quando si installa/reinstallare 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

ho incontrato lo stesso problema. Mi sembra che Cuscino e cuscino (caso diverso in 'p') siano due pacchetti diversi. Quindi, se stai usando Pillow, pip install pillow potrebbe non essere d'aiuto. Ecco la mia soluzione:

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

Le prime due linee sono di rimuovere qualsiasi cuscino o pacchetto di cuscini.

La terza riga consiste nell'installare i due pacchetti richiesti.

Forth è reinstallare il cuscino.

nota, se si utilizza virtualenv, pip install/uninstall deve essere eseguito sotto virtualenv

+1

Questo funziona per me –

1

io uso ubuntu 64bit versione 14.04LTS desktop, e ho cercato la risposta di Johnny Zhao.
Quando

exec sudo easy_install PIL 

ho ottenuto un errore:

can't find freetype/fterrors.h 

e trovo freetype2 in/usr/include/

Si potrebbe risolverlo da:

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

poi l'installazione sarà positiva

+0

Questo succede perché hai python-imaging installato con 'apt-get install python-imaging'. Se si installa semplicemente 'libjpeg-dev libfreetype6-dev zlib1g-dev' da solo senza tutto il python-imaging, non si ottiene questo errore. –

1

La causa potrebbe essere che hai installato Cuscino senza supporto zlib.

su CentOS 7:

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

E se si sta utilizzando per una webapp riavviare il server web da applicare.

+0

Questo è probabilmente ovvio, ma se stai usando un virtualenv, il "pip install Pillow - upgrade" dovrebbe essere fatto all'interno del virtualenv. – shawn

Problemi correlati