我正在使用 xlib。
我有一个 XImage 结构,其中填充了来自 XGetImage() 调用的信息。有没有一种流行的方法可以从 XImage 获得更有意义的东西.. 即 PNG?
我看过 libpng,但几乎每个人都听说它是一头难以驯服的野兽。这仍然是推荐的路径吗?
另请参阅如何将 XImage 保存为位图?尽管那个人有不能使用图书馆的限制。
如果您可以使用图书馆,我相信开罗会为您做到这一点。它为您处理 libpng 混乱的 PNG 保存,并且它具有从 X 获取像素的代码。但是,它可能使从 XImage 获取像素变得困难;它会想从窗口或像素图中获取它们。如果您可以将您的 XGetImage() 替换为 cairo,那么它可能会正常工作。我认为你在开罗大致做事的方式是:
您还可以使用 Xlib 表面作为源来绘制图像表面,然后根据需要对图像表面进行其他操作(缩放或在其上绘制或其他),然后再保存为 PNG。
如果您使用任何类型的 UI 工具包,它可能也有这方面的代码,例如 GTK+ 有 gdk_pixbuf_get_from_drawable() 等。