Pull to refresh

Автоматизация скриншотинга, делаем сами

Reading time2 min
Views1.5K
В этом наборе букв я расскажу про создание сервиса скриншотинга у себя на удаленном Linux-сервере.

Заинтересовался этим вопросом 6 месяцев назад.
Первое и самое очевидное решение лежало на поверхности: Какой нибудь виртуализатор дисплея из иксов (xvfb), какой — нибудь рендерер с неубитым API/CLI, утилиты работы с изображениями (imageMagic) и какой-нибудь мозг.
Итак имеем: Debian4 (впоследствии 5) на удаленной виртуальный машине(VDS), виртуализованной на OpenVZ; xvfb; opera и php набор языков программирования.
Установка xvfb выполняется стандратными средствами управления пакетами, данный софт есть в репозитариях почти всех систем.
Единственное что, при запуске xvfb может ругаться на отсутсвие пакетов. Напр. на xfonts-base.
Решается просто, apt-cache search font | grep base и установкой соотв пакета.
Ругань на другие паки шрифтов устраняется аналогично.
опера ставится с оф. сайта например из deb-пакета. Чтобы убрать всякие предупреждения правим ~/.opera/opera6.ini
[Extensions]
Plugin Failed Warning=0
Ask Flash Download=0
Plugins=0
...
[State]
Accept License=1
Reading Plugins=0
Run=1
...


запускаем xvfb и оперу.

Xvfb :2 -screen 0 1280x1024x24
export DISPLAY=:2.0
/usr/bin/opera -nomail -nosession -disableinputmethods -geometry 1280x1024 -fullscreen "http://habrahabr.ru"

отлично, опера срендерила картинку, теперь ее можно сохранить, ждем 7 секунд, и обрезаем поля
xwd -root -display :2.0| xwdtopnm | pnmtojpeg -quality=90 -optimize > /home/web/jj/img/temp.jpg
xwd -root -silent | xwdtopnm | pamcut -left=5 -right=1260 -top=83 -bottom=1023 | pnmtojpeg -quality=85 -optimize > /home/web/jj/img/habr.jpg

Теперь грамотный мозг это запрограммирует и будет пользоваться сиим благом цивилизации.
Результат
Вот собственно и все.
Чуть-чуть пиара:
Кстати, VDS я беру у vdsplanet, куда сбежал от ужасного качества firstvds.
Tags:
Hubs:
+10
Comments7

Articles

Change theme settings