画像 Pixbuf をソケット経由で送信したいのですが、受信した画像は白黒で歪んでいます。私が使用している手順は次のとおりです。
1) その Pixbuf のピクセル配列を取得する
2) ピクセル配列をシリアル化する
3) シリアル化された文字列を BytesIO に変換します
4) ソケットを送信する
MyShot = ScreenShot2()
frame = MyShot.GetScreenShot() #this function returns the Pixbuf
a = frame.get_pixels_array()
Sframe = pickle.dumps( a, 1)
b = BytesIO()
b.write(Sframe)
b.seek(0)
この後、次の方法でイメージを再構築する必要があります。
1) 受信した文字列を元のピクセル配列で逆シリアル化します
2) ピクセル配列から Pixbuf を構築する
3) 画像を保存する
res = gtk.gdk.pixbuf_new_from_data(pickle.loads(b.getvalue()), frame.get_colorspace(), False, frame.get_bits_per_sample(), frame.get_width(), frame.get_height(), frame.get_rowstride()) #also tried this res = gtk.gdk.pixbuf_new_from_array(pickle.loads(b.read()),gtk.gdk.COLORSPACE_RGB,8)
res.save("result.png","png")