Проблема создания скриншотов web-страниц прямо на сервере встает достаточно редко, но, как говорится, метко. Хватишься иной раз, так гугль дает ссылки на какой-нибудь парсер уже существующего сервиса. Но, господа, это же не наш метод!
Покопавшись, можно найти что-нибудь типа связки xvfb (виртуальный фреймбуффер) с каким-нибудь браузером, например xvfb+opera, или khtml2png, который тянет за собой фигову тучу kde'шных либ. А ведь так хочется какого-нибудь легкого standalone скриптика...
Решив посвятить немного времени изучению вопроса, обстоятельно исследовал имеющийся инструментарий.
Итак, первое что мне попалось на глаза: webkit2png. Для работы скрипта необходим собственно Safari, который в свою очередь стоит на… Mac OS. Ну, может кому и пригодится...
Но, мир полон энтузиастов, и я нашел порт этого скрипта на нормальные никсы с использованием Qt и Python — webkit2png.py. Для работы нам потребуются всего 2 библиотеки:
Скрипт имеет следующие аргументы:
Стартует xvfb. По умолчанию, не используется.
Задает размеры окна виртуального браузера. По умолчанию, выставлен параметр 0, что означает autodetect.
Записывает полученный скриншот в указанный файл.
Формат изображения. По умолчанию, png.
Ресайз изображения.
Задает пропорции. Из возможных значений: «ignore» (по умолчанию), «keep», «expand».
Выставляет таймаут запроса. По умолчанию, не используется.
Позволяет проследить процесс создания изображения. По умолчанию, не используется.
Пример вызова:
В процессе поиска скриптов, нашлись еще два (mozgrab и html2jpg), написанные на perl и использующие mozilla. Они оказались довольно старыми и, на мой взгляд, неудобными. Дальнейшие поиски решено было бросить, так как уже найдено оптимальное решение.
Покопавшись, можно найти что-нибудь типа связки xvfb (виртуальный фреймбуффер) с каким-нибудь браузером, например xvfb+opera, или khtml2png, который тянет за собой фигову тучу kde'шных либ. А ведь так хочется какого-нибудь легкого standalone скриптика...
Решив посвятить немного времени изучению вопроса, обстоятельно исследовал имеющийся инструментарий.
Итак, первое что мне попалось на глаза: webkit2png. Для работы скрипта необходим собственно Safari, который в свою очередь стоит на… Mac OS. Ну, может кому и пригодится...
Но, мир полон энтузиастов, и я нашел порт этого скрипта на нормальные никсы с использованием Qt и Python — webkit2png.py. Для работы нам потребуются всего 2 библиотеки:
libqt4-webkit и python-qt4
.Скрипт имеет следующие аргументы:
-x, --xvfb
Стартует xvfb. По умолчанию, не используется.
-g, --geometry
Задает размеры окна виртуального браузера. По умолчанию, выставлен параметр 0, что означает autodetect.
-o, --output
Записывает полученный скриншот в указанный файл.
-f, --format
Формат изображения. По умолчанию, png.
--scale
Ресайз изображения.
--aspect-ratio
Задает пропорции. Из возможных значений: «ignore» (по умолчанию), «keep», «expand».
-t, --timeout
Выставляет таймаут запроса. По умолчанию, не используется.
--debug
Позволяет проследить процесс создания изображения. По умолчанию, не используется.
Пример вызова:
python webkit2png.py http://habrahabr.ru -o habra.png -g 1024 768
В процессе поиска скриптов, нашлись еще два (mozgrab и html2jpg), написанные на perl и использующие mozilla. Они оказались довольно старыми и, на мой взгляд, неудобными. Дальнейшие поиски решено было бросить, так как уже найдено оптимальное решение.