Linux: окно запуска, экран захвата - PullRequest
2 голосов
/ 15 января 2009

Мне нужно написать инструмент командной строки Red Hat Linux, который запускает окно и записывает его внешний вид на диск в формате JPEG.

Обычно на целевых машинах нет видеокарт, но мы можем установить любые программные компоненты (например, X).

Вопрос или два:

Какие библиотеки или инструменты вы могли бы предложить для этого?

Если бы я использовал что-то вроде GTK + для создания этого инструмента, не мешало бы отсутствие видеокарты в его работе?

Я видел scrot, но он не поддерживает захват определенного окна без взаимодействия с пользователем.

Ответы [ 2 ]

4 голосов
/ 15 января 2009

Похоже, вам нужно использовать драйвер virtual framebuffer * для сервера X.org в сочетании с xwd , NetPBM , и cjpeg утилиты.

Я не уверен насчет конкретной конфигурации, которая вам понадобится для X-сервера, но вам, вероятно, придется убедиться, что на сервере, который вы используете, встроен драйвер виртуального кадрового буфера. Драйвер виртуального кадрового буфера - это драйвер дисплея, который можно использовать для подключения к видеокарте NVidia или ATI, за исключением того, что его «выход» представляет собой кусок памяти, содержащий пиксели, а не ЖК-экран.

xwd - это один из стандартных инструментов X, который может создавать дамп X Window. В командной строке xwd можно указать, какое окно выводить. Он выводит поток в стиле фанк "xwd" на стандартный вывод.

Утилиты NetPBM представляют собой набор инструментов командной строки, которые преобразуют один формат изображения в другой. Он включает в себя тот, который конвертирует xwdtoppm. PPM - это очень простой, несжатый формат, который является промежуточным форматом, понятным большинству инструментов NetPBM.

cjpeg является частью стандартной коллекции инструментов JPEG и, вероятно, устанавливается, если у вас также есть NetPBM. cjpeg может принимать поток байтов PPM и выдавать поток байтов JPEG.

С помощью магии сценариев Unix и конвейеров вы можете связать эти утилиты вместе, чтобы запустить приложение с окном, вызвать xwd, xwdtoppm и cjpeg, чтобы выгрузить изображение в файл.

0 голосов
/ 18 января 2009

Вы можете попробовать запустить vncserver для создания виртуального дисплея X-окна - графическая карта не нужна. Обязательно установите для переменной DISPLAY номер дисплея, который печатается при запуске vncserver. Затем запустите ваше приложение на созданном дисплее (в фоновом режиме) и используйте xwd с форматерами данных или команду gimp для захвата изображения экрана в формате jpeg.

Кстати, проверьте похожие ответы для Программа командной строки для создания скриншотов веб-сайтов (в Linux) .

...