2017-03-02 8 views
1

Ich habe eine Django-App, die Daten über ein mehrteiliges Formular mit POST- und FILES-Werten sammelt. Die Formulardaten werden von meinen Django-Ansichten korrekt empfangen, und ich versuche, die über das Formular übergebenen Bilddateien zu verarbeiten, um über PIL.Image Thumbnails zu erzeugen. Wenn ich jedoch die Image.thumbnail() -Methode aufruft (oder eine andere Methode als Image.open()), bekomme ich einen IOError, den ich nicht weiter untersuchen kann.PIL Image.thumbnail() schlägt mit unbekanntem IOError fehl

Hier ist der Code:

from PIL import Image 
import io 
import os 
from django.core.files.uploadedfile import SimpleUploadedFile 
from django.core.files.base import ContentFile 
from django.conf import settings 

def generate_thumbnail(file): 
if 'image' in file.content_type: 
    print "about to save the thumbnail" 
    file_content= ContentFile(file.read()) 
    print "file read" 
    full_filename = os.path.join(settings.MEDIA_ROOT, file.name) 
    print "path selected" 
    fout = open(full_filename, 'wb+') 
    for chunk in file_content.chunks(): 
     fout.write(chunk) 
    fout.close() 
    print " file saved" 
    im = Image.open(open(full_filename, 'rb')) 
    print im.getbands() 
    #no problem up to this point 
    try: 
     size = 128,128 
     thumb = im.thumbnail(size) 
    except IOError as e: 
     print "I/O error({0}): {1}".format(e.errno, e.strerror) 

Das Skript stellt sich die IOError Ausnahme, aber der Druck gibt mir nur "I/O-Fehler (Keine): Keine". Bitte beachten Sie, dass fout.write() erfolgreich meine Datei in den ausgewählten Pfad schreibt, und dass Image.open() sowie Image.getbands() erfolgreich funktionieren (letzteres wird korrekt zurückgegeben, ('R', 'G', ' B ')). Aber alles, was Image.load() aufruft - in diesem Fall Image.thumbnail() - scheint nicht zu funktionieren.

Irgendwelche Ideen?

Antwort

0

(Verschieben der Antwort der Frage Feld in das Antwortfeld)

ich die Ausnahme der IOError als Text drucken geändert, und bekam ‚Decoder jpeg nicht verfügbar‘. Ein brew install libjpeg ergab jedoch, dass die Bibliothek bereits installiert wurde. Aus welchem ​​Grund auch immer, Pillow sah es nicht. Also habe ich Pillow mit pip uninstall pillow und pip install pillow deinstalliert und neu installiert.

Verwandte Themen