将xlib XImage保存到PNG

我正在使用xlib

我有一个XImage结构充满了来自XGetImage()调用的信息。 有没有一种stream行的方法,从XImage得到更有意义的东西..即PNG?

我曾经看过libpng,但几乎每个人都听说这是一个驯服的野兽。 这仍然是build议的path?

另请参见如何将XImage保存为位图? 尽管那个人有约束他们不能使用图书馆。

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

您也可以使用Xlib表面作为源绘制到图像表面,然后在保存为PNG之前,使用图像表面(如果需要,可以缩放或绘制它或其他)进行其他操作。

如果你使用的是任何一种UI工具包,它也可能有这样的代码,比如GTK +有gdk_pixbuf_get_from_drawable()等等。