Форум сайта python.su
0
def get_pixel_colour(i_x, i_y): o_x_root = Xlib.display.Display().screen().root o_x_image = o_x_root.get_image(i_x, i_y, 1, 1, Xlib.X.ZPixmap, 0xffffffff) o_pil_image_rgb = PIL.Image.fromstring( "RGB", (1, 1), o_x_image.data, "raw", "BGRX") lf_colour = PIL.ImageStat.Stat(o_pil_image_rgb).mean return rgb_to_hex(tuple(map(int, lf_colour)))
Офлайн
88
Наверное нужно как-то так:
disp = Xlib.display.Display() # work disp.Close()
Офлайн
0
o_x_root = Xlib.display.Display().screen().root
Один раз, вне цикла.
Офлайн
88
Если на то пошло, get_image тоже стоит вынести из цикла получения пикселей (если операции не разнесены во времени) и PIL там лишний.
Отредактировано Shaman (Июнь 17, 2013 18:25:00)
Офлайн
0
А можете предложить свой вариант, без PILa?
И ещё, если запустить на одном tty, а после перейти на другой, то возвращается 000000
Офлайн
88
EskemouseКонечно
А можете предложить свой вариант, без PILa?
o_x_image = o_x_root.get_image(i_x, i_y, 1, 1, Xlib.X.ZPixmap, 0xffffffff) return rgb_to_hex(tuple(reversed(map(ord, o_x_image.data[:3]))))
Офлайн
0
ShamanДа, спасибо, работает)
Если я правильно интерпретировал формат
Eskemouse
если запустить на одном tty, а после перейти на другой, то возвращается 000000
Офлайн
88
EskemouseНе понял, что именно вы там творите. Если щелкать консолями во время исполнения
если запустить на одном tty, а после перейти на другой, то возвращается 000000
import Xlib.display, logging def get_pixel_colour(i_x, i_y): o_x_root = Xlib.display.Display().screen().root o_x_image = o_x_root.get_image(i_x, i_y, 1, 1, Xlib.X.ZPixmap, 0xffffffff) return tuple(reversed(map(ord, o_x_image.data[:3]))) while True: logging.info(get_pixel_colour(0, 0))
Офлайн
0
ShamanЯ плохо объясняю, но в общем так…
Не понял, что именно вы там творите
Офлайн