7

Я использую программу, которая делает большое изображение, которое я должен прокрутить для просмотра. Программа не имеет возможности сохранить изображение, и у меня нет доступа к источнику, чтобы изменить его. Единственный способ получить изображение из программы - снимок экрана. Моя цель - сохранить полноразмерное изображение без необходимости объединять отдельные скриншоты.

Я использую этот скрипт, чтобы попытаться сделать снимок экрана:

#!/bin/bash
window=$(wmctrl -l | grep "Program$" | awk '{print $1}')
wmctrl -v -i -r $window -e '0,0,0,6030,5828'
wmctrl -i -a $window
import -window $window ~/Desktop/screenshot.png

Это использует wmctrl, чтобы получить идентификатор окна ($ window) для окна с именем "Program". Затем он пытается изменить размер окна до желаемых размеров. Он использует imagemagick (импорт) для сохранения screenshot.png на рабочем столе пользователя. Все это работает, кроме шага изменения размера.

Я могу изменить размер окна, используя wmctrl -r -e, но размеры, превышающие размер экрана, не работают.

Я использую Ubuntu 10.04 и рабочий стол Gnome. Я запускаю два монитора, но я попробовал это с одним из них отключен.

Есть ли способ изменить размер окна больше моего экрана, чтобы получить огромный скриншот?

Часть II:

Благодаря ответу sdaau я попытался использовать xrandr для настройки панорамирования экрана, чтобы рабочий стол был больше, чем у моего монитора.

xrandr --output LVDS --panning 2600x2500

Эта команда заставляет экран ноутбука перемещаться по рабочему столу размером 2600x2500, хотя он может показывать только 1440x900 одновременно. Чтобы отключить панорамирование, я могу использовать аналогичную команду для установки общего размера и с нулями для секции панорамирования. Это возвращает меня к исходному поведению дисплея ноутбука.

xrandr --fb 1440x900 --output LVDS --panning 0x0

Все это делается с помощью xrandr и не требует каких-либо изменений в Xorg.conf (моя система Ubuntu даже не имеет Xorg.conf).

Кажется, моя видеокарта допускает только около 6,5 миллионов пикселей, хотя максимальные размеры составляют 8192x8192. Этот максимум представляется максимальным для любого измерения, но существует ограничение на количество пикселей, которое можно умножить на ширину, умноженную на высоту.

Как только я изменил размер экрана, я снова попробовал свой скрипт и получил скриншот. Скриншот, однако, полностью зашифрован. Я не уверен, что он не может сделать снимок экрана вне экрана или он не может обработать большие размеры окна. В режиме панорамирования окно должно думать, что оно видно, а диспетчер окон должен думать, что оно на экране. Итак, где-то есть пиксельный буфер с этими пикселями, поэтому должен быть способ получить скриншот.

Возможно, есть другой способ делать скриншоты, который может работать лучше, чем импорт.

1 ответ1

1

Только что протестировано с import и окно выходит за пределы размера экрана; и кажется, что import будет захватывать изображение того же размера, что и большой размер окна - к сожалению, все пиксели, превышающие размер экрана, и все пиксели, покрытые другими окнами, будут черными.

Так что, возможно, единственный способ - использовать xrandr для увеличения размера экрана (как в «панорамировании экрана») - или использовать что-то еще, что обеспечит больший размер экрана: например, « Как я могу сделать снимки экрана браузера с более высоким разрешением, чем мой браузер поддерживает? - Super User "примечания:

Используйте Xephyr для создания вложенного сеанса X

(Xephyr по-видимому, находится в sudo apt-get install xserver-xephyr в Ubuntu)

Надеюсь это поможет,
Ура!

Редактировать: да, xrandr работает с обычным для меня экраном печати (также с import , просто требуется достаточно места для терминала, чтобы он не перекрывал целевое окно), просто обратите внимание на виртуальный размер в xorg.conf (см. « xrandr: экран не может быть больше чем "...)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .