2010-12-16 9 views
5

Ich benutze Xlib.Speichern Xlib XImage zu PNG

Ich habe eine XImage Struktur gefüllt mit Informationen aus einem XGetImage() Aufruf. Gibt es eine beliebte Methode, um von XImage zu etwas aussagekräftigeren zu kommen .. nämlich PNG?

Ich habe Libpng angeschaut, aber habe von so ziemlich jedem gehört, dass es ein Biest ist zu zähmen. Wäre das immer noch der empfohlene Weg?

+0

http://stackoverflow.com/questions/4462958/writing-bitmap-to-string-insted-of-file-or-ximage-to-png –

Antwort

4

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.

+0

danke! Ich hatte diesen Beitrag gesehen, war aber ziemlich ignorant darin, eine andere Bibliothek für etwas zu versuchen, von dem ich dachte, dass es eine beliebte Aufgabe gewesen wäre. Kairo ist die perfekte Antwort – digitalfoo