Eine alte Frage, aber ich habe etwas dazu entdeckt.
Wenn Sie ein Bild mit Pillow(PIL) laden und base64.b64encode(img.tobytes()) verwenden, dann ist der Base64-Code ungültig.
Damit dies funktioniert, erstellen Sie nach dem Laden Ihrer Bytes in eine Image-Klasse ein BytesIO-Objekt und verwenden dieses, um das Bild mit dem Format in der BytesIO zu speichern, d. h. img.save(bt_ob, format="png").
Setzen Sie seak auf 0 und verwenden Sie dann die Ausgabe des BytesIO-Objekts, um den Base64-kodierten Text zu erstellen
base64.b64encode(bt_ob.read()).decode()
Dieser Code wird nun in der HTML-Datei im Format "data:image/png;base64,<>" funktionieren.
Daher funktioniert html nur mit kodierten Daten aus einem dateiähnlichen Objekt, und ein Pillow-Image-Objekt erzeugt das nicht und funktioniert daher nicht