Seite 1 von 1
Wie kann ein Python script als Bild fungieren?
Verfasst: Montag 7. Januar 2008, 09:37
von Ephraim
Hey,
wie kann ich ein Python Script z.b. in einer Website in einem img Tag als src angeben und dieses Script gibt dann ein Bild aus?
Der einfachste Ansatz hat erstmal noch nicht gefruchtet.
Hier der Code von meinem Ansatz:
Code: Alles auswählen
#!/usr/bin/python2.5
print "Content-type: image/jpg\n\n";
f = open('test.jpg')
print f.read()
f.close()
Vorschläge?
Ciao Ephraim
Re: Wie kann ein Python script als Bild fungieren?
Verfasst: Montag 7. Januar 2008, 09:48
von gerold
Ephraim hat geschrieben:Code: Alles auswählen
#!/usr/bin/python2.5
print "Content-type: image/jpg\n\n";
f = open('test.jpg')
print f.read()
f.close()
Hallo Ephraim!
Leider hast du uns nicht mitgeteilt, welcher Fehler auftaucht.
Aber eines ist sowiso falsch. Eine Binärdatei, wie sie ein Bild ist, darfst du nicht wie eine Textdatei öffnen. Du musst "b" mit angeben.
Außerdem würde ich in Internetprogrammen lieber den absoluten Pfad zu einer Datei angeben.
Und wenn du in deinem CGI-Programm "cgitb"
http://docs.python.org/lib/module-cgitb.html verwendest, dann bekommst du evt. bessere Fehlermeldungen.
Ich gehe mal davon aus, dass du CGI verwendest, da dein Code so aussieht.
mfg
Gerold

Verfasst: Montag 7. Januar 2008, 09:56
von Ephraim
Upps

...
Na der Browser zeigt kein Bild an, nur den Platzhalter für ein Bild welches nicht gefunden werden kann oder keine korrekte Daten enthält.
Hab mir aber den "Stream" schon als text angeguckt. Das Bild wird auf jeden Fall mal geöffnet und ausgegeben.
Danke für den Hinweise wegen Binär Datei. Leider ändert das nichts.
Mit php funktioniert des gleiche Script, der einzige Unterschied der sich für mich daraus ergibt ist die Nutzung der Funktion Header() von PHP.
Insofern geh ich ma davon aus, dass ich mit dem Header noch irgendwas falsch mache, aber sicher weiß ich nicht was die Funktion Header() so alles macht

.
Ciao Ephraim
Verfasst: Montag 7. Januar 2008, 10:03
von Ephraim
He

... jetzt funtzts
Ich hab vergessen, dass print von Python schon selbst ein Newline hinten anhängt.
Dadurch waren nach dem Header drei Newlines anstatt zwei. Das dritte ging dann in die Daten des Bilds mit ein und des geht natürlich nicht

.
Danke für die Hilfe!
Ciao Ephraim
korrekter Code:
Code: Alles auswählen
#!/usr/bin/python2.5
print "content-type: image/jpeg\n";
f = open("test.jpg", "rb")
print f.read()
f.close()
Verfasst: Montag 7. Januar 2008, 10:22
von Y0Gi
Genau deswegen kann es oft hilfreich sein, nicht `print`, sondern `sys.stdout.write()` zu verwenden, bei welchem man dann explizit zwei Newlines angibt, die dann auch der tatsächlich ausgegebenen Anzahl entsprechen.