Я использую программу, которая делает большое изображение, которое я должен прокрутить для просмотра. Программа не имеет возможности сохранить изображение, и у меня нет доступа к источнику, чтобы изменить его. Единственный способ получить изображение из программы - снимок экрана. Моя цель - сохранить полноразмерное изображение без необходимости объединять отдельные скриншоты.
Я использую этот скрипт, чтобы попытаться сделать снимок экрана:
#!/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. Этот максимум представляется максимальным для любого измерения, но существует ограничение на количество пикселей, которое можно умножить на ширину, умноженную на высоту.
Как только я изменил размер экрана, я снова попробовал свой скрипт и получил скриншот. Скриншот, однако, полностью зашифрован. Я не уверен, что он не может сделать снимок экрана вне экрана или он не может обработать большие размеры окна. В режиме панорамирования окно должно думать, что оно видно, а диспетчер окон должен думать, что оно на экране. Итак, где-то есть пиксельный буфер с этими пикселями, поэтому должен быть способ получить скриншот.
Возможно, есть другой способ делать скриншоты, который может работать лучше, чем импорт.