Я хочу отправить изображение Pixbuf поверх сокета, но полученное изображение только черно-белое и искажено. Вот шаги, я использую:Re-Construct a png image from GDK 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) Deserialize полученной строки в исходном пикселях массиве
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")
Хорошая идея спасибо :) –