1

バイナリデータをに取得するのに苦労していgtk.gdk.pixbufます。

これは私の問題を明らかにするはずです:

file = open("image.jpg", "rb")
//Ultimately this is going to come from a BLOB
binary = f.read()
//I created a pixbuf directly from the jpg 
//and took the rowstride values &c. from that
pixbuf = gtk.gdk.pixbuf_new_from_data(
    binary, gtk.gdk.COLORSPACE_RGB, False, 8 , 450, 640, 1352)

これは次の場合に失敗します。

ValueError: data length (90825) is less then required by the other parameters (865280)

私の現在の回避策は、バイナリデータをファイルに書き込んでPixbufから、そのファイルからを作成することです。それはとてもハッキーな感じがします。私はデータベースからバイナリデータを読み取っているので、バッファから直接pixbufを作成できるソリューションが本当に必要です。

データベースからを読み取ってファイルに書き込むだけで簡単な理由がわかりませんBLOB。ファイルをpixbufとしてロードしますが、バッファから直接移動するのは困難です。

私は何が間違っているのですか?

4

1 に答える 1

5

RGBデータ専用のメソッドでjpgデータを処理しようとしています。

jpgを処理する場合は、ここで提案されているように、この形式のローダーを使用してください。

file = open("image.jpg", "rb")
binary = file.read()
loader = gtk.gdk.PixbufLoader("jpeg")
loader.write(binary)
loader.close()
pixbuf = loader.get_pixbuf()

pixbuf、あなたが必要なものが含まれています。回避策では、このようなローダーが自動的に使用されました。

于 2012-10-30T15:05:22.663 に答える