我想获取整个 x11 显示器的顶部/左侧像素 (0;0) 的 RGB 值。
到目前为止我得到了什么:
XColor c;
Display *d = XOpenDisplay((char *) NULL);
XImage *image;
image = XGetImage (d, RootWindow (d, DefaultScreen (d)), x, y, 1, 1, AllPlanes, XYPixmap);
c->pixel = XGetPixel (image, 0, 0);
XFree (image);
XQueryColor (d, DefaultColormap(d, DefaultScreen (d)), c);
cout << c.red << " " << c.green << " " << c.blue << "\n";
但我需要这些值是0..255
or (0.00)..(1.00)
,而它们看起来像0..57825
,这不是我认识的格式。
此外,为了获得一个像素而复制整个屏幕非常慢。因为这将在速度关键的环境中使用,如果有人知道一种更高效的方法来做到这一点,我将不胜感激。也许使用XGetSubImage
1x1 大小,但我在 x11 开发方面非常糟糕,不知道如何实现。
我该怎么办?