Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 将xlib XImage保存到PNG_C_Linux_X11_Xlib_Xorg - Fatal编程技术网

C 将xlib XImage保存到PNG

C 将xlib XImage保存到PNG,c,linux,x11,xlib,xorg,C,Linux,X11,Xlib,Xorg,我正在使用xlib 我有一个XImage结构,其中填充了来自XGetImage()调用的信息。有没有一种流行的方法可以让你从XImage获得更有意义的东西。。就是PNG 我看过libpng,但几乎每个人都听说它是一只需要驯服的野兽。这仍然是推荐的路径吗 还可以看到,尽管那个人有不能使用库的限制 如果你能使用图书馆,开罗是一个很好的图书馆,我相信它会为你做到这一点。它有PNG保存为您处理libpng混乱,它有代码从X获得像素。但是,它可能会使它很难从XImage获得像素;它将希望从窗口或pixma

我正在使用xlib

我有一个XImage结构,其中填充了来自XGetImage()调用的信息。有没有一种流行的方法可以让你从XImage获得更有意义的东西。。就是PNG

我看过libpng,但几乎每个人都听说它是一只需要驯服的野兽。这仍然是推荐的路径吗

还可以看到,尽管那个人有不能使用库的限制

如果你能使用图书馆,开罗是一个很好的图书馆,我相信它会为你做到这一点。它有PNG保存为您处理libpng混乱,它有代码从X获得像素。但是,它可能会使它很难从XImage获得像素;它将希望从窗口或pixmap获取它们。如果您可以用cairo替换XGetImage(),那么它可能工作得很好。我认为,你在开罗的大致做法是:

  • 创建一个指向可绘制对象的Xlib曲面
  • 保存到PNG
您还可以使用Xlib曲面作为源来绘制图像曲面,然后在保存为PNG之前,根据需要对图像曲面执行其他操作(缩放或在其上绘制等)


如果您使用的是任何类型的UI工具包,它可能也有相应的代码,例如GTK+有gdk_pixbuf_get_from_drawable()等。

谢谢!我曾看过那篇文章,但对于尝试另一个图书馆的工作却相当无知,因为我认为这是一项受欢迎的任务。开罗看起来是个完美的答案