Forum: PC-Programmierung Base64 als Fenstericon in Python?


von Rolf (Gast)


Lesenswert?

Hi,

kann ich ein Fenstericon als Base64 verwenden?

Ich habe das so versucht, aber leider ohne Erfolg.
1
fenster = tk.Tk()
2
grape_ico_b64='''
3
AAABAAEAQEAAAAEAIAAo
4
'''
5
# Icon für Lesbarkeit gekürzt
6
7
myicon = tk.PhotoImage(data=grape_ico_b64)  
8
fenster.iconbitmap(image=myicon)
9
fenster.mainloop()

Als Fehler bekomme ich
1
Traceback (most recent call last):
2
  File "D:\python\Base64_icon_test.py", line 15, in <module>
3
    fenster.iconbitmap(myicon)
4
  File "C:\Python34\lib\tkinter\__init__.py", line 1648, in wm_iconbitmap
5
    return self.tk.call('wm', 'iconbitmap', self._w, bitmap)
6
_tkinter.TclError: bitmap "pyimage1" not defined

Wenn ich auf der selben Basis ein Hintergrundbild einbinde, dann geht 
das.
1
photo = tk.PhotoImage(data=grape_ico_b64)  
2
text1.insert(END,'\n')
3
text1.image_create(END, image=photo)
4
text1.pack(side=LEFT)

von Matthias R. (sw2739)


Lesenswert?

Rolf schrieb:

>kann ich ein Fenstericon als Base64 verwenden?

Base64 etwa im Rahmen des Authentifizierungprozesses bei smtp war mir 
bekannt, aber wieso sollte man Bild-/Icon-Dateien base64-encoden?

Wozu das ganze?

von Oliver R. (Gast)


Lesenswert?

Matthias R. schrieb:
> Rolf schrieb:
>
>>kann ich ein Fenstericon als Base64 verwenden?
>
> Base64 etwa im Rahmen des Authentifizierungprozesses bei smtp war mir
> bekannt, aber wieso sollte man Bild-/Icon-Dateien base64-encoden?
>
> Wozu das ganze?

Zum Sinn: es gibt in HTML diese Möglichkeit:

https://wiki.selfhtml.org/wiki/Grafik/Grafiken_mit_Data-URI

von Mauricio di Mauro (Gast)


Lesenswert?

Rolf schrieb:

> kann ich ein Fenstericon als Base64 verwenden?

Ja.

Als Beispiel die Buttons zur Sprachumschaltung bei 
PyKiCad-CaseSensitiveLibCure_RevD_13Apr2015.py aus 
http://www.mikrocontroller.net/wikifiles/f/f6/PyKiCad-CaseSensitiveLibCure_RevD_13Apr2015.zip 
(Achtung, Python 3 !)

Geht nicht nur mit Grafiken, auch mit Audio.

Matthias R. schrieb:
> Base64 etwa im Rahmen des Authentifizierungprozesses bei smtp war mir
> bekannt, aber wieso sollte man Bild-/Icon-Dateien base64-encoden?
>
> Wozu das ganze?

Damit können die Icon Grafiken direkt in das Skript mit eingebunden 
werden.
Das ist halt einfacher jemandem in die Hand zu geben der sich damit 
nicht Auskennt, als wenn er einem ganzen Ordner hat, wo alles mit dem 
richtigem Namen am richtigen Platz stehen muss.

Hat natürlich alles seine Grenzen......

von Matthias R. (sw2739)


Lesenswert?

Oliver R.schrieb:

>https://wiki.selfhtml.org/wiki/Grafik/Grafiken_mit_Data-URI

Danke! War mir neu, dass so was eingesetzt wird.

Mauricio di Mauro schrieb:

>Damit können die Icon Grafiken direkt in das Skript mit eingebunden
>werden.
>Das ist halt einfacher jemandem in die Hand zu geben der sich damit
>nicht Auskennt, als wenn er einem ganzen Ordner hat, wo alles mit dem
>richtigem Namen am richtigen Platz stehen muss.

Ich habe gerade gelesen, dass auch e-mail-Anhänge, Logos und Signaturen 
innerhalb einer Mail base64 encoded werden können. Letztere werden dann 
in jedem Falle angezeigt, auch wenn der Mail Client sie doch lieber 
blocken möchte. Sehr coole Sache.

von Sascha W. (sascha-w)


Lesenswert?

Matthias R. schrieb:
> Oliver R.schrieb:
>
>>https://wiki.selfhtml.org/wiki/Grafik/Grafiken_mit_Data-URI
>
> Danke! War mir neu, dass so was eingesetzt wird.
>
> Mauricio di Mauro schrieb:
>
>>Damit können die Icon Grafiken direkt in das Skript mit eingebunden
>>werden.
>>Das ist halt einfacher jemandem in die Hand zu geben der sich damit
>>nicht Auskennt, als wenn er einem ganzen Ordner hat, wo alles mit dem
>>richtigem Namen am richtigen Platz stehen muss.
>
> Ich habe gerade gelesen, dass auch e-mail-Anhänge, Logos und Signaturen
> innerhalb einer Mail base64 encoded werden können.
nicht können - müssen, da eine Email grundsätzlich keine Binärdaten 
enthalten kann.
Alle Anhänge werden auf diese Weise kodiert, was selbige in einer Mail 
eben auch 25% größer macht.

> Letztere werden dann
> in jedem Falle angezeigt, auch wenn der Mail Client sie doch lieber
> blocken möchte. Sehr coole Sache.
Das blocken bezieht sich ja nur auf das Nachladen extern eingebundener 
Inhalte

Sascha

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.