Seite 1 von 1
PNG in String einbinden
Verfasst: Dienstag 26. Oktober 2021, 19:54
von kaapython
Hallo und guten Abend
Ich übergebe in einem Return Wert verschieden formatierte Texte, welche dann später in einer HTML Seite ausgegeben werden. Das funktioniert soweit auch. Ich würde nun aber gern zwischen den Texten ein Bild (.png) einfügen. Leider scheitere ich daran. Ich habe dank anderen Forenbeiträgen, dies gefunden:
Code: Alles auswählen
data_uri = base64.b64encode(open('test.png', 'rb').read()).decode('utf-8')
img_tag = '<img src="data:image/png;base64,{0}">'.format(data_uri)
Dies ist meine Übergabe in der Funktion. Dort würde ich auch gern das Bild mit übergeben. Da es aber nicht vom Typ string ist, funktioniert das natürlich nicht.
Code: Alles auswählen
return {"messages": messages+text1+text2+img_tag, "hit": hit, "function": solution}
Kann mir jemand einen Tipp geben, wie ich das umgesetzt bekomme, dass ich das Bild mit übergebe?
Danke im Voraus
Re: PNG in String einbinden
Verfasst: Dienstag 26. Oktober 2021, 21:13
von rogerb
@kaapython,
um Bilder in HTML Seiten darzustellen werden diese in der Regel getrennt vom HTML Dokument gespeichert. Im HTML Dokument steht lediglich der Link zum Ablageort des Bildes. Der Browser setzt das Bild dann an der entsprechenden Stelle ein.
Deine Frage ist auch leider etwas ungenau. Du solltest zunächst allgemein erklären, was du eigentlich machen möchtest.
Was ist das Ziel?
Bitte poste deinen gesamten Code. Einzelne Zeilen ohne Zusammenhang machen wenig Sinn.
Re: PNG in String einbinden
Verfasst: Dienstag 26. Oktober 2021, 21:52
von __blackjack__
@kaapython: Was funktioniert denn konkret nicht? Wenn man mal davon absieht, dass das mit dem `open()` ohne ein schliessen der Datei unsauber ist, sollte das soweit eigentlich gehen.
`data_uri` ist als Name falsch, weil das keine URI ist, sondern nur ein Teil davon.
Re: PNG in String einbinden
Verfasst: Mittwoch 27. Oktober 2021, 00:11
von LukeNukem
kaapython hat geschrieben: Dienstag 26. Oktober 2021, 19:54
Dies ist meine Übergabe in der Funktion. Dort würde ich auch gern das Bild mit übergeben. Da es aber nicht vom Typ string ist, funktioniert das natürlich nicht.
Dann mach aus dem bytes-Objekt, das base64.b64encode() zurückgibt, ein str-Objekt. Dazu hat das Bytes-Objekt die Methode "decode()".
Re: PNG in String einbinden
Verfasst: Mittwoch 27. Oktober 2021, 08:56
von kaapython
LukeNukem hat geschrieben: Mittwoch 27. Oktober 2021, 00:11
kaapython hat geschrieben: Dienstag 26. Oktober 2021, 19:54
Dies ist meine Übergabe in der Funktion. Dort würde ich auch gern das Bild mit übergeben. Da es aber nicht vom Typ string ist, funktioniert das natürlich nicht.
Dann mach aus dem bytes-Objekt, das base64.b64encode() zurückgibt, ein str-Objekt. Dazu hat das Bytes-Objekt die Methode "decode()".
Das habe ich bereits versucht. Ich erhalte trotzdem folgende Fehlermeldung:
Code: Alles auswählen
Exception has occurred: TypeError (note: full exception trace is shown but execution is paused at: load_room)
can only concatenate list (not "str") to list
Re: PNG in String einbinden
Verfasst: Mittwoch 27. Oktober 2021, 09:45
von rogerb
Dann enthält die Variable "messages" wohl eine Liste. Aber das kann man an dem gezeigten Codeausschnitt nicht sehen.
Code: Alles auswählen
In [1]: liste = ["a", "b", "c"]
In [2]: liste+"d"
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-2-f5531f9360c7> in <module>
----> 1 liste+"d"
TypeError: can only concatenate list (not "str") to list
In [3]:
Re: PNG in String einbinden
Verfasst: Mittwoch 27. Oktober 2021, 10:12
von kaapython
Danke, eine andere Variable war nicht vom Typ "str". Vielen Dank für die Hilfe