2011-12-12 22 views
5

Eventuali duplicati:
pip install PIL -E TICKETS-1 - No JPEG/PNG supportPIL codificatore JPEG non disponibile

sto lavorando su un fiasco foto, e sto avendo problemi con il mio validazione dei form. Il modulo viene convalidato durante il caricamento di una foto GIF, ma qualsiasi altro formato di provo solleva la seguente eccezione:

Upload a valid image. The file you uploaded was either not an image or a corrupted image. 

Modulo

<form enctype="multipart/form-data" method="post" action="/pic/">{% csrf_token %} 
    {{ form.as_p }} 
    <p><input type="submit" value="View uploaded image"></p> 
    <input type="hidden" name="stage" value="crop"> 
</form> 

View

if request.method == 'POST': 
     form = ProfilePicForm(request.POST, request.FILES) 
     if form.is_valid(): 
      *do stuff* 
     else: 
      logger.debug('Form errors == [%s]' % form.errors) 

ho installato libjpeg-dev (usando apt-get) prima di installare PIL (usando easy_install). All'inizio pensavo che ciò potesse essere dovuto ad un'installazione scorretta di libjpeg-dev o PIL, ma il problema persiste per altri formati come png? Questo problema si verifica in realtà anche per le immagini png. Non sto ottenendo un problema con il decodificatore jpeg, quindi penso che non sia così, ma non ne sono sicuro. Inoltre, sto usando il server di sviluppo django.


Aggiornamento

ho deciso di provare una reinstallazione del PIL. Ho cancellato la cartella di installazione PIL /usr/local/lib/python2.7/dist-packages/PIL e il mio file PIL.pth (nella stessa cartella dist-packages). Ho eseguito lo script setup.py utilizzando sudo python setup.py install. Allora ho fatto funzionare lo script selftest.py, e viene a mancare al primo test:

-------------------------------------------------------------------- 
PIL 1.1.7 TEST SUMMARY 
-------------------------------------------------------------------- 
Python modules loaded from ./PIL 
Binary modules loaded from ./PIL 
-------------------------------------------------------------------- 
--- PIL CORE support ok 
*** TKINTER support not installed 
*** JPEG support not installed 
*** ZLIB (PNG/ZIP) support not installed 
*** FREETYPE2 support not installed 
--- LITTLECMS support ok 
-------------------------------------------------------------------- 
Running selftest: 
***************************************************************** 
Failure in example: 
try: 
_info(Image.open(os.path.join(ROOT, "Images/lena.jpg"))) 
except IOError, v: 
print v 
from line #24 of selftest.testimage 
Expected: ('JPEG', 'RGB', (128, 128)) 
Got: decoder jpeg not available 
1 items had failures: 
    1 of 57 in selftest.testimage 
***Test Failed*** 1 failures. 
*** 1 tests of 57 failed. 

io non sono sicuro di come ottenere PIL per lavorare con i moduli non supportati elencati sopra. Posso verificare di avere zlib1g-dev, libfreetype6-dev, liblcms1-dev e libjpeg62-dev, e le librerie stesse installate sul mio sistema perché quando provo ad installarle con apt-get, dice che ho già l'ultima versione .

+0

Potrebbe essere tu don ' t installato libjpeg? Di solito PNG _will_ funziona anche nel caso in cui questo è il problema. – c4urself

+0

Quando eseguo sudo apt-get install libjpeg-dev, l'output dice libjpeg62-dev è già la versione più recente. C'è un altro modo per verificare che PIL e libjpeg-dev funzionino correttamente insieme? –

+0

controlla se hai: zlib1g-dev, libfreetype6-dev, liblcms1-dev e libjpeg62-dev, + le librerie stesse. – ashwoods

risposta

11

Provare a scaricare PIL dalla fonte, quindi modificare setup.py aggiungendo questa linea:

add_directory(library_dirs, "/usr/lib/i386-linux-gnu") 

prima di questa linea (214):

add_directory(library_dirs, "/usr/lib") 

poi

sudo python setup.py install 

Dovrebbe lavora ora

+7

Ho modificato 'setup.py' in modo diverso, ma ha funzionato anche. Ho cambiato 'JPEG_ROOT = None' in' JPEG_ROOT = "/ usr/lib/x86_64-linux-gnu" 'e poi ho eseguito' setup.py' e ha funzionato. –

+5

per bluehost aggiungi add_directory (library_dirs, "/ usr/lib64") – tovmeod

Problemi correlati