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

Code: Alles auswählen

can only concatenate list (not "str") to list
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