主な問題は、私が見つけたものから、base64 でエンコードされたイメージからイメージをロードする簡単な/文書化された方法がないことです。次のコードを使用して、イメージを base64 にエンコードします (ソースにすべてのイメージを含める必要がなく、一時ファイルを作成して終了時に削除する必要もありません)。私が使用する画像形式は.png
、Gtk3+ でサポートされているものです。(結果から。この目的でGtk3 +GdkPixbuf.Pixbuf.get_formats()
を['png']
使用する方法について本当に混乱しています。
import base64
image_name = 'image.png'
image_loc = 'd:\\Home\\' + image_name
with open(image_loc, 'rb') as image_file:
encoded_string = base64.b64encode(image_file.read())
print(encoded_string)
たとえば、出力を使用したい:
base64_data="""
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABsklEQVRYhe2XIVMCQRSAv2AwGAgEAuFmJBiMFmcMBH8AgUAgXHDMFww2gtFA
IBicsRgNBgLBcS7yE4gEIsFgIBDO8Pa8x7FwB7cnxTfzyr637327b+/dLiTSBIbAHIgydAGMgAscyUOOpDZdAu2iyZsq4BcwAHpb9NE1xFAl
P8s558klRFzzwQ5zejgsRxygVxBgbwiXAHtBuAaIIa7KBAgyACJgBlTKAqgBH8A0pWmIXKXYB2CbdFRM/xAA3qEBKipm8A9wCIAa8q/oUOJn
6FTKAqgA10gZWkD9rwAugRfWm1IEfCKlKQ2ghdwrstp0vwyAuiX5HGnRMwtE1zVAfLPS6hubZ7HNgaorgFPkppxOEvcBG0AE3LoCuGZ1Zb7R
hrGfqLGJ8h24ArhTcaYZvqHyDV0BtFWcGbLlHrJygCM1Nla+r5Cc0OcCAA3sNfaN3dtgDwDeSO5xzQIQthvRNoAlcA7yGFmowTFSmzz6jmwv
rL6wYp0Yv7HFttKMusC3xSmP3qs4/ZxzJiTn41c85N032mEHQqQBHacWs+mFvTSQa8ldSxW4Qb7zEDntAabmWn4A0clKl9nNvDwAAAAASUVO
RK5CYII
"""
base64 から画像をレンダリングします。
補足として、tkinter
これは次の方法で簡単に実行できました。
tkinter.PhotoImage(data=base64_data)
そして、必要な場所に画像を表示します。
Gtk3+ に戻ると、base64 からイメージをロードする方法が見つかりませんでした。でもGdkPixbuf.Pixbuf.new_from_data
、壊れた画像が表示されます。も試しましGio.MemoryInputStream.new_from_bytes
たが、画像の形式がサポートされていないと表示されます。