2

主な問題は、私が見つけたものから、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たが、画像の形式がサポートされていないと表示されます。

4

1 に答える 1

2

データはbase64エンコードされGtk3+ています。 で使用するには、まずデコードする必要があります。

import base64
raw_data = base64.b64decode(data)

次に、あなたは正しかったGdkPixbuf.Pixbuf.new_from_dataです:(
私はテストできませんが、これはうまくいくと思います)

import base64
raw_data = base64.b64decode(data)
image = GdkPixbuf.Pixbuf.new_from_data(raw_data)
image_show_2.set_from_pixbuf(image)

そうでなければ、あなたが示したようにすることができます:

import base64
raw_data = base64.b64decode(data)
byting = GLib.Bytes(raw_data)
inputing = Gio.MemoryInputStream.new_from_bytes(byting)
image = GdkPixbuf.Pixbuf.new_from_data(inputing)
image_show_2.set_from_pixbuf(image)
于 2016-01-12T09:22:58.067 に答える