主要问题是,据我所知,没有简单/记录的方法可以从 base64 编码图像加载图像。我使用以下代码将图像编码为 base64(这样我就不需要将所有图像包含在源中,也不应该创建临时文件并在退出时删除它们)。我使用的图像格式.png
是 Gtk3+ 支持的。(来自GdkPixbuf.Pixbuf.get_formats()
我['png']
的结果。我真的很困惑如何为此目的使用 Gtk3+。
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
,但它说不支持图像的格式。