什么是gtk等价的PIL.Image tobytes()?
i = PIL.Image.open('image.png')
data = i.tobytes()
我正在尝试使用GTK获取屏幕并将其转换为与之前的PIL相同的字节:
import gtk, PIL.Image
img_width = gtk.gdk.screen_width()
img_height = gtk.gdk.screen_height()
data = gtk.gdk.Pixbuf(
gtk.gdk.COLORSPACE_RGB,
False,
8,
img_width,
img_height
)
data.get_from_drawable(
gtk.gdk.get_default_root_window(),
gtk.gdk.colormap_get_system(),
0, 0, 0, 0,
img_width,
img_height
)
data = data.tobytes() #<-- here trying to get bytes
答案 0 :(得分:0)
您正在寻找pixbuf.get_pixels()
。
请注意,返回的数据可能包含填充:
图像中的行从上到下存储,每行像素都是 从左到右存储。在行的末尾可能有填充。 pixbuf的“rowstride”值,由返回 gdk_pixbuf_get_rowstride(),表示之间的字节数 行。
(来自here。)
您可以使用字符串/字节操作来删除此填充,或者使用pixbuf.save_to_callback
以原始RGB格式保存图像而不填充。