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?