Я собирался сказать, что для ответа нужно использовать libpng .Однако после быстрого просмотра документации я нахожу эту библиотеку гораздо более сложной, чем нужно (простые вещи должны быть простыми, сложные должны быть возможными ... после просмотра руководства кажется, что простые вещи с libpngвместо этого близко к невозможному).Формат PNG имеет опции gajillion, libpng чрезвычайно гибок и подключаем, но, очевидно, нет простого ярлыка, когда вы просто хотите сделать что-то более простое (например, сохранить одно непрозрачное изображение).просто сбросьте изображение в необработанном формате и затем используйте imagemagick (возможно, через канал).
С другой стороны, вы рассматривали возможность использования Qt вместо голого X?Захватывать экран легко, и вы можете получить его в гораздо более управляемом формате (QImage).Сохранение практически в любой формат файла, который вам нравится, также тривиально (однако формат png довольно труден для CPU с Qt, поэтому не рекомендуется, если вы хотите сделать захват живого видео).