Seite 1 von 1

Bilder mit PIL für Web.py erzeugen

Verfasst: Donnerstag 16. August 2007, 09:23
von Blutorange
Moinmoin,
ich habe ein kleines Problem mit PIL, und zwar möchte ich für Web.py eine Klasse schreiben, die ein Bild aus diverse kleineren Bildern zusammen setzt (das ist kein Problem), es dann aber mit nem Header einfach das ganze wie mit print o.Ä. ausgibt.

Zur erklaerung noch mal ein Beispiel:
ich versuche auf /dynimages/1-6-9.gif zuzugreifen

/dynimages/(.*) wird von einer Klasse namens Dynimage verwaltet.
Dynimage sucht sich nun die Dateien 1.gif, 6.gif, und 9.gif und setzt sie wie ichs mir vorstelle zusammen.
Dann kommt jedoch das Problem, ich schaffe es nicht, dass ich das irgendwie an den Browser geschickt bekomme, sondern kanns nur mit einem standart Programm oeffnen lassen oder per stdout ausgeben lassen, was leider auch nichts bringt.

Ich hoffe man versteht in etwas was ich meine.

MfG

Verfasst: Donnerstag 16. August 2007, 11:17
von Jorn
Hallo Blutorange,

Ich weiss nicht was web.py ist,
aber vielleicht hilft ja

start_response("200 OK", ['Content-Type', 'image/jpeg'])

+

senden des Bildes in Binärform weiter ??

Jorn

Verfasst: Donnerstag 16. August 2007, 12:07
von Blutorange
web.py is n framework fuer web applikationen in python

mein Problem ist eigentlich nur, wie ich das PIL Image Objekt als Binärform ausgebe, weil ich bis jetzt nur gefunden habe, wie ich es in nem Graphikeditor öffnen kann, bzw an stdout schicke, aber halt nicht an den http request dann.

Oder gibt es sonst ein zu PIL ähnliches Modul, wo jemand weiß, wie das dort funktioniert ?

MfG

Verfasst: Donnerstag 16. August 2007, 12:29
von Jorn
..mit Binärform mein ich z.b.

f = open("bild.jpg","rb") # rb = Read Binary
bildbinaer = f.read()
f.close()

.. nun ist in "bildbinear" das Bild in binärform bereit zur Ausgabe.

Verfasst: Donnerstag 16. August 2007, 14:55
von Y0Gi
Wie wäre es damit?

Code: Alles auswählen

from StringIO import StringIO

f = StringIO()
im.save(f, format='jpeg')  # oder 'jpg', kA
image_data = f.getvalue()
f.close()

start_response('200 OK', ['Content-Type', 'image/jpeg']) 
return [image_data]

Verfasst: Donnerstag 16. August 2007, 19:17
von dev
oder so:

Code: Alles auswählen

image_data = im.convert("RGB").tostring("jpeg","RGB")
Siehe PIL Handbuch Abschnitt tostring

Ciao,
dev

PS: Ob das .convert bei Dir notwendig ist mußt Du für Deinen Fall überprüfen.

Verfasst: Freitag 17. August 2007, 00:03
von Blutorange
danke dev (und auch alle anderen),
das war genau das, was ich gesucht habe, aber irgendwie war ich zu blind es zu finden D: