python gtk相当于PIL.Image tobytes()

时间:2017-06-18 11:44:20

标签: python

什么是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

1 个答案:

答案 0 :(得分:0)

您正在寻找pixbuf.get_pixels()

请注意,返回的数据可能包含填充:

  

图像中的行从上到下存储,每行像素都是   从左到右存储。在行的末尾可能有填充。   pixbuf的“rowstride”值,由返回   gdk_pixbuf_get_rowstride(),表示之间的字节数   行。

(来自here。)

您可以使用字符串/字节操作来删除此填充,或者使用pixbuf.save_to_callback以原始RGB格式保存图像而不填充。