将xlib XImage保存到PNG

时间:2010-12-16 22:01:49

标签: c linux x11 xlib xorg

我正在使用xlib。

我有一个XImage结构,其中包含来自XGetImage()调用的信息。是否有一种流行的方法可以从XImage获得更有意义的东西......即PNG?

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

1 个答案:

答案 0 :(得分:4)

另请参阅How to save XImage as bitmap?,但该人有限制他们无法使用图书馆。

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

您还可以使用Xlib曲面作为绘制到图像表面的源,然后在保存为PNG之前,根据需要对图像表面(缩放或绘制或其他任何)执行其他操作。

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