c++ - 在 C++、Linux 中获取像素的颜色

标签 c++ linux

我正在寻找在 C++/Linux 中获取具有给定屏幕坐标 (x,y) 的像素颜色的可能性?也许类似于 Windows 中的 getPixel() 。我花了一整天的时间寻找某物,但没有成功。

谢谢,斯特凡

最佳答案

假设您的意思是使用 C 和 GTK,答案可以是:

gdk_get_default_root_window()

GdkPixbuf*  gdk_pixbuf_get_from_drawable    (GdkPixbuf *dest,
                                             GdkDrawable *src,
                                             GdkColormap *cmap,
                                             int src_x,
                                             int src_y,
                                             int dest_x,
                                             int dest_y,
                                             int width,
                                             int height);

编辑:使用 Gdkmm 的示例 C++ 代码(请注意,这只是一个假定 RGB 颜色空间的示例,您应该在赋予原始字节含义之前检查可绘制对象的颜色空间)。

#include <iostream>
#include <gtkmm.h>
#include <gdkmm.h>

int main(int argc, char* argv[])
{
  Gtk::Main kit(argc, argv);
  if(argc != 3) { std::cerr << argv[0] << " x y" << std::endl; return 1;}
  int x = atoi(argv[1]);
  int y = atoi(argv[2]);
  Glib::RefPtr<Gdk::Screen> screen = Gdk::Screen::get_default();
  Glib::RefPtr<Gdk::Drawable> win = screen->get_root_window();
  Glib::RefPtr<Gdk::Pixbuf> pb = Gdk::Pixbuf::create(win, x, y, 1, 1);
  unsigned char* rgb = pb->get_pixels();
  std::cerr << (int)rgb[0] << ", " << (int)rgb[1] << ", " << (int)rgb[2] << std::endl;
  return 0;
}

关于c++ - 在 C++、Linux 中获取像素的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2540218/

相关文章:

c++ - 使用非空函数对象提升精神语义 Action

c++ - 将 FreeImage 链接为 VS2010 中的静态库?

c++ - 如何在 C++ 的类中返回一个对象的字符串?

linux - 如何检测是否从另一个 shell 脚本调用了 shell 脚本

linux - 在 Linux 服务器上创建和编辑 MS-Word 文档?

php - 加密性能

php - file_get_contents 和 curl 不能通过 php 工作,但可以在 CLI 上工作

c++ - 使用 boost::interprocess 编译链接器错误

linux - 使用 Find 和 SCP 维护目录结构

c++ - 如何使用 typeinfo.name C++ 声明变量