Только что узнал, как это сделать с помощью gtk.Кажется, быстрее всего:
def image_grab_gtk(window):
left, top, right, bot = get_rect(window)
w = right - left
h = bot - top
s = gtk.gdk.Pixbuf(
gtk.gdk.COLORSPACE_RGB, False, 8, w, h)
s.get_from_drawable(
gtk.gdk.get_default_root_window(),
gtk.gdk.colormap_get_system(),
left, top, 0, 0, w, h )
final = Image.frombuffer(
"RGB",
(w, h),
s.get_pixels(),
"raw",
"RGB",
s.get_rowstride(), 1)
return final
Без преобразования в PIL
изображение, это в 8 раз быстрее, чем PIL в моем тестовом случае.С преобразованием это все еще ~ 2.7x быстрее.