Siehe auch How to save XImage as bitmap? obwohl diese Person die Einschränkung hatte, dass sie keine Bibliothek verwenden konnten.
Wenn Sie eine Bibliothek verwenden können, ist Kairo ein guter, der dies für Sie tun wird, glaube ich. Es hat PNG-Speicher, der sich mit dem libpng-Chaos beschäftigt, und es hat Code, um die Pixel von X zu bekommen. Es kann jedoch schwierig sein, Pixel von einem X-Image zu bekommen. es wird sie aus einem Fenster oder einer Pixmap holen wollen. Wenn Sie einfach Ihre XGetImage() mit Kairo ersetzen können, dann könnte es gut funktionieren. Die Art und Weise Sie die Dinge grob in kairo tun würde, ich denke, ist:
Sie könnten auch die Xlib Oberfläche als Quelle verwenden, um zeichne auf eine Bildoberfläche und tue dann andere Dinge mit der Bildoberfläche (skaliere oder male darauf oder was auch immer), wenn du willst, bevor du sie als PNG speicherst.
Wenn Sie irgendeine Art von UI-Toolkit verwenden, hat es wahrscheinlich auch Code dafür, z. GTK + hat gdk_pixbuf_get_from_drawable() etc.
http://stackoverflow.com/questions/4462958/writing-bitmap-to-string-insted-of-file-or-ximage-to-png –