PIL ValueError: nicht genug Bild-Daten?
Ich bin immer ein Fehler, mit Ihrer Botschaft wie oben, wenn ich versuchte, Sie zu Holen ein Bild aus einem URL ein und konvertieren den string in seiner Antwort auf Image
innerhalb der App Engine.
from google.appengine.api import urlfetch
def fetch_img(url):
try:
result = urlfetch.fetch(url=url)
if result.status_code == 200:
return result.content
except Exception, e:
logging.error(e)
url = "http://maps.googleapis.com/maps/api/staticmap?center=Narita+International+Airport,Narita,Chiba+Prefecture,+Japan&zoom=18&size=512x512&maptype=roadmap&markers=color:blue|label:S|40.702147,-74.015794&markers=color:green|label:G|40.711614,-74.012318&markers=color:red|color:red|label:C|40.718217,-73.998284&sensor=false"
img = fetch_img(url)
# As the URL above tells, its size is 512x512
img = Image.fromstring('RGBA', (512, 512), img)
Laut PIL, size option ist wohl ein Tupel von Pixel. Diese habe ich angegeben. Jemand könnte darauf hinweisen, mein Missverständnis?
- Wenn Sie eine Frage stellen, geben Sie bitte den gesamten stacktrace, sondern als Umschreibung der Fehler für uns.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zurückgegebenen Daten durch Bild ist das Bild selbst nicht die RAW-RGB-Daten, also brauchen Sie nicht, um es zu laden, als raw-Daten, sondern entweder nur speichern, dass die Daten-Datei und es wird ein gültiges abbild oder verwenden Sie PIL, um es zu öffnen z.B. (ich konvertiert haben, Ihren code nicht zu verwenden, appengine-api, so dass jeder mit einer normalen python-installation ausführen können, die xample)
Ausgabe:
fromstring
ist zum laden von raw-Bilddaten. Was haben Sie in den stringimg
ist ein Bild-Format PNG-format. Was Sie tun möchten, ist erstellen Sie eine StringIO Objekt und PIL Lesen zu können. Wie diese:Beachten Sie, dass die PIL wird nicht unterstützt, auf Google App Engine. Es ist nur in der dev als ein stub für die Bilder-API.
Können Sie etwas wie das hier tun: