SNK Software
Web Studio Монополия Metaproducts Утилиты Игры
Монополию Web Studio Библиотека
Вебмастер Дельфи Работа на ПК Самоучитель
Для PHP Для Delphi
Веб-дизайн Программирование Компьютеры Девайсы Заметки
SNK Software Индустрия hardware Индустрия software
О студии Портфолио Сопровождение сайтов

Новые материалы

Девайсы:
Сравнительный обзор Nokia Lumia 920 и HTC 8X
Девайсы:
Обзор Nokia Lumia 820 – смартфона на WP8
Вебмастеру:
Настройка Apache, PHP и MySQL для Linux-VPS
Вебмастеру:
VPS на домашнем ПК: настройка сети в VM VirtualBox и Debian
Вебмастеру:
VPS на домашнем ПК: устанавливаем Linux Debian 6
Вебмастеру:
VPS на домашнем ПК: установка VM VirtualBox
Работа на компьютере:
Иные возможности текстового процессора Word
Работа на компьютере:
Вставка объектов
Работа на компьютере:
Таблицы в Word
Работа на компьютере:
Печать и сохранение документов
Работа на компьютере:
Сноски, колонтитулы, оглавление и указатели в Word

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

Сегодня, заглянув на один из форумов, наткнулся на вопрос о том, как сделать при помощи PHP скриншот сайта. Задачка показалось интересной, и через несколько минуть поиска наткнулся на такую вещь, как CutyCapt. Впрочем, для работы этой утилиты нужен X-server. Но т.к. иксы и виртуальный сервер под хостинг - вещи не вполне совместимые (ну зачем графическая оболочка веб-серверу?), то решено было поставить xvfb.

Подготовка

Итак, для начала подготовимся и установим себе на сервер (сойдет любой Lunix-овый VPS/VDS, в примерах использован Debian) все необходимое. Для начала нам понадобится CutyCapt и виртуальные X-ы. Начнем с последних - сгодится Fake Xserver, он же xvfb. Ставим:

apt-get update apt-get install xvfb

Теперь собираем CutyCapt. Для этого понадобится svn:

apt-get install subversion libqt4-webkit libqt4-dev g++

Subversion установлен, создаем какой-либо каталог для CutyCapt и скачиваем в него исходники:

md /usr/ccapt cd /usr/ccapt svn co https://cutycapt.svn.sourceforge.net/svnroot/cutycap

Теперь перейдем в каталог и соберем CutyCapt:

cd cutycapt/CutyCapt qmake make

Вот и готово. Проверяем работу:

xvfb-run --server-args="-screen 0, 1024x768x24" /usr/ccapt/cutycapt/CutyCapt/CutyCapt --url=http://www.snkey.net --out=/var/snkeynet.jpg

В каталоге var должен появиться файлик snkeynet.jpg со скриншотом главной страницы сайта SNK Software.

Практическое использование

Перейдем к использованию того, что имеем. Например, далее файл можно обработать, скажем, пропорционально уменьшить при помощи SNK GSCP (конкретно - нужен класс TIMGH из файла img.php). Переключаемся на PHP и пишем следующий код:

include("img.php"); $screen = new TIMGH("/var/snkeynet.png"); $screen->resize(400,300,"/var/www/site/screenshots/snkeynets.jpg");

Получаем файл snkeynets.jpg размером не более 400 на 300 пикселей:

snkey.net. Последний скриншот старого сайта :)

Осталось довести до ума все это дело. Так что напоследок напишем скрипт, который будет делать скриншот сайта и выводить его непосредственно в окно браузера. Назовем его show.php, вот его полный исходный код:

<?php include("img.php"); $url = $_GET["url"]; if (substr($url,0,4) != "http") $url = "http://".$url; exec('xvfb-run --server-args="-screen 0, 1024x768x24" /usr/ccapt/cutycapt/CutyCapt/CutyCapt --url='.$url.' --out=/var/www/site/screenshots/tmp.jpg'); $screen = new TIMGH("/var/www/site/screenshots/tmp.jpg"); header("Content-type: image/jpeg"); $screen->resize(400,300,NULL); ?>

Теперь для того, чтобы увидеть скриншот сайта www.snkey.net, достаточно в адресной строке браузера написать site.name/show.php?url=www.snkey.net. Разумеется, вместо site.name следует написать имя вашего сайта, равно как и заменить указанные пути на ваши в коде скрипта.

2011-04-11

Избранное

SNK GSCP
SNK GSCP - новая библиотека для PHP 5!
Web Studio
Web Studio и Visual Workshop
Библиотека:
Стандарты на web-технологии
Монополия
Монополия v. 2.0.2
Загрузки:
скачать программы
Продукция:
программы и книги
Техподдержка / Связаться с нами
Copyright © 1999-2013 SNK. Все права защищены.
При использовании материалов с сайта ссылка на источник обязательна.
Рейтинг@Mail.ru