Скриншот сайта с использованием PHP.

12
juniorspecialistphp
На сайте с 08.08.2010
Offline
25
6482

Добрый день.

Возникла такая задача, написать скрипт, который будет в результате выводить скриншот сайта. То есть наподобие http://www.webmorda.kz. Можно конечно использовать API этого сайта или подобного и получать скриншот, но если сайт будет недоступен этот вариант не подходит.

Нашёл вариант с использованием "IECapt", но это под Винду, мне же нужно под Убунту.

Через гугл нашёл как бы вариант через CutyCapt, такая утилитка позволяет делать скрины под линуксом, но что-то с нею не ладится, файл постоянно 0байт весит, код брал отсюда http://habrahabr.ru/blogs/webdev/111188/#habracut

$tmpfname = tempnam('/tmp', 'catalog') . '.jpg';

// эскейпим перед вставкой в строку команды
$url = escapeshellarg($url);
// собираем командную строку
$cmd = sprintf('xvfb-run --server-args="-screen 0, 1024x768x24" CutyCapt --min-width=1280 --url=%s --out=\'%s\'', $url, $tmpfname);
exec($cmd);

Может кто-то с подобным сталкивался и может предоставить готовое решение(рабочее) или класс или хотя бы подсказать в чём может быть причина.

Пишу скрипты любой сложности на РНР. (http://elagin.su)
Jake Foley
На сайте с 16.08.2008
Offline
151
#1

я сталкивался, пробовал разные штуки но на unix системах довольно сложно реализовать, мне нужны были маленькие превью сайтов и я использовал готовые картинки с сайтов thumbшоттеров

juniorspecialistphp
На сайте с 08.08.2010
Offline
25
#2

Да готовые картинки с "thumbшоттеров" это круто, но если сервис загнётся или будет недоступен, то и скрипт работать не будет. Под виндой утилита "CutyCapt" работает без вопросов, но на хостинге не хочет вообще работать, может конечно дело в хостинге и для этих целей нужен vds, есть такое предположение.

ДП
На сайте с 23.11.2009
Offline
203
#3

Вот эта штука может скриншоты браузеров делать, но это это правда не на php :)

http://www.phantomjs.org/

juniorspecialistphp
На сайте с 08.08.2010
Offline
25
#4

Попробовал даже вариант запускать бинарный файл под VDS, чтобы было больше прав. Но по прежнему запуск утилиты из пхп кода не выходит, хотя на локальной машине(ОС Винда) отработал скрипт без вопросов. Может у кого-то есть мысли почему может не запускаться утилитка, поделитесь со мной плиз.

S0
На сайте с 20.11.2010
Offline
32
#5

Проблема, имхо, в том, что на ваших линуксовых VDS нет графической оболочки (ибо за ненадобностью её обычно не ставят). А ведь скриншот-то делать должен не Lynx, а нормальный графический браузер. Соответственно, помимо CutyCapt и Qt нужен еще и X-server (ну или хотя бы fake).

juniorspecialistphp
На сайте с 08.08.2010
Offline
25
#6

Понятно, а как быть с тем, что на оф. сайте http://cutycapt.sourceforge.net/ пишут "You cannot use CutyCapt without an X server, but you can use e.g. Xvfb as light-weight server if you are not running an interactive graphical desktop environment. For example, you could use:

% xvfb-run --server-args="-screen 0, 1024x768x24" ./CutyCapt --url=... --out=...

" ? Как я понимаю, если нет X-server, то можно запускать с параметрами "xvfb-run --server-args="-screen 0, 1024x768x24"".

S0
На сайте с 20.11.2010
Offline
32
#7

Можно. Я же сразу и сказал что можно fake. Но тот же xvfb надо поставить для начала.

P.S.

Да, и браузер тоже установить надо. Firefox, к примеру.

truant
На сайте с 07.03.2011
Offline
28
#8

Делаю скриншоты с помощью этого аддона для Огненного Лиса: https://addons.mozilla.org/en-us/firefox/addon/fireshot/

Очень удобная штука.

Антон Лавеев
На сайте с 31.10.2005
Offline
425
#9
truant:
Делаю скриншоты с помощью этого аддона для Огненного Лиса: https://addons.mozilla.org/en-us/fir...ddon/fireshot/
Очень удобная штука.

Лишь бы ляпнуть чего-то, да?

Сам пользуюсь платным тумбхостом и не парюсь.

☠️☠️☠️
iamsens
На сайте с 26.08.2009
Offline
115
#10
juniorspecialistphp:
Понятно, а как быть с тем, что на оф. сайте http://cutycapt.sourceforge.net/ пишут "You cannot use CutyCapt without an X server, but you can use e.g. Xvfb as light-weight server if you are not running an interactive graphical desktop environment. For example, you could use:
% xvfb-run --server-args="-screen 0, 1024x768x24" ./CutyCapt --url=... --out=...
" ? Как я понимаю, если нет X-server, то можно запускать с параметрами "xvfb-run --server-args="-screen 0, 1024x768x24"".

а если с консоли руками запускать, то получается скриншот?

если да, то в скрипте надо полный путь к утилите xvfb-run прописывать

iamsens добавил 11-04-2011 в 16:11

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

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий