Сохранение xlib XImage в PNG - PullRequest
       72

Сохранение xlib XImage в PNG

5 голосов
/ 17 декабря 2010

Я использую xlib.

У меня есть структура XImage, заполненная информацией из вызова XGetImage (). Есть ли популярный способ получить из XImage что-то более значимое, а именно PNG?

Я посмотрел на libpng, но почти от всех слышал, что это чудовище, которое можно приручить. Будет ли это рекомендуемый путь?

1 Ответ

4 голосов
/ 17 декабря 2010

См. Также Как сохранить XImage как растровое изображение? хотя у этого человека было ограничение, что он не мог использовать библиотеку.

Если вы можете использовать библиотеку, Каир - хорошийтот, который сделает это для тебя, я верю.Он имеет сохранение PNG, связанное с беспорядком libpng для вас, и имеет код для получения пикселей от X. Однако, это может затруднить получение пикселей из XImage;он захочет получить их из окна или растрового изображения.Если вы можете просто заменить свой XGetImage () на cairo, то он может работать нормально.Я думаю, что в Каире все будет примерно так:

Вы также можете использовать поверхность Xlib в качестве источника для рисования на поверхности изображения, а затем выполнять другие операции с поверхностью изображения (масштабировать или рисовать на ней или как угодно), если хотите, перед сохранением в формате PNG.

Если вы используете какой-либо инструментарий пользовательского интерфейса, он, вероятно, также имеет код для этого, например, GTK + имеет gdk_pixbuf_get_from_drawable () и т. Д.

...