私はxlibを使用しています。
XGetImage()呼び出しからの情報で満たされたXImage構造があります。XImageからもっと意味のあるもの、つまりPNGに移行するための一般的な方法はありますか?
私はlibpngを見てきましたが、ほとんどの人から、飼いならすのは獣だと聞いています。これはまだ推奨される方法ですか?
XImage をビットマップとして保存する方法も参照してください。その人は、ライブラリを使用できないという制約がありましたが。
ライブラリを使用できる場合、カイロはこれを行うのに適したライブラリです。libpng の混乱を処理する PNG 保存機能があり、X からピクセルを取得するコードがあります。ただし、XImage からピクセルを取得するのが難しくなる場合があります。ウィンドウまたはピックスマップからそれらを取得する必要があります。XGetImage() を cairo に置き換えるだけで問題なく動作する可能性があります。カイロで大まかに物事を行う方法は次のとおりです。
また、Xlib サーフェスをソースとしてイメージ サーフェスに描画し、必要に応じてイメージ サーフェスで他の処理 (スケーリングやペイントなど) を行ってから、PNG として保存することもできます。
何らかの種類の UI ツールキットを使用している場合は、おそらくこのためのコードも含まれています。たとえば、GTK+ には gdk_pixbuf_get_from_drawable() などがあります。