Ich möchte ein Bild mit dem base64-Modul in eine Zeichenfolge codieren. Ich bin jedoch auf ein Problem gestoßen. Wie gebe ich das Bild an, das codiert werden soll? Ich habe versucht, das Verzeichnis für das Image zu verwenden, aber das führt einfach dazu, dass das Verzeichnis codiert wird. Ich möchte, dass die eigentliche Bilddatei verschlüsselt wird.
BEARBEITEN
Ich habe dieses Snippet ausprobiert:
with open("C:\Python26\seriph1.BMP", "rb") as f:
data12 = f.read()
UU = data12.encode("base64")
UUU = base64.b64decode(UU)
print UUU
self.image = ImageTk.PhotoImage(Image.open(UUU))
aber ich bekomme folgenden Fehler:
Traceback (most recent call last):
File "<string>", line 245, in run_nodebug
File "C:\Python26\GUI1.2.9.py", line 473, in <module>
app = simpleapp_tk(None)
File "C:\Python26\GUI1.2.9.py", line 14, in __init__
self.initialize()
File "C:\Python26\GUI1.2.9.py", line 431, in initialize
self.image = ImageTk.PhotoImage(Image.open(UUU))
File "C:\Python26\lib\site-packages\PIL\Image.py", line 1952, in open
fp = __builtin__.open(fp, "rb")
TypeError: file() argument 1 must be encoded string without NULL bytes, not str
Was mache ich falsch?
base64.b64encode(fh.read()).decode()
um eine Zeichenfolge zu erhalten, die in HTML-Dateien verwendet werden soll.Mit Python 2.x können Sie mit .encode trivial codieren:
quelle
Die erste Antwort gibt eine Zeichenfolge mit dem Präfix b 'aus. Das bedeutet, dass Ihre Zeichenfolge wie folgt aussieht: b'your_string 'Um dieses Problem zu beheben, fügen Sie bitte die folgende Codezeile hinzu.
quelle
:-)
)Wie ich in Ihrer vorherigen Frage gesagt habe, muss die Zeichenfolge nicht mit base64 codiert werden, sondern das Programm wird nur langsamer. Verwenden Sie einfach den Repr
Jetzt wird das Bild als Variable gespeichert, die
image_data
in einer Datei namensimage.py
Starten Sie einen neuen Interpreter aufgerufen und importieren Sie die image_dataquelle
In Anlehnung an das, was Ivo van der Wijk und Gnibbler zuvor entwickelt haben, ist dies eine dynamische Lösung
Sie können dann entscheiden, die Ausgabebilddatei mit Cython zu kompilieren , um sie cool zu machen. Mit dieser Methode können Sie alle Ihre Grafiken in einem Modul bündeln.
quelle
quelle