Создание миниатюр из URL-адресов с использованием PHP - PullRequest
3 голосов
/ 30 января 2011

Я хочу создавать эскизы веб-сайтов.Я нашел несколько сайтов, которые обрабатывают его с помощью API, например http://www.websnapr.com/

Как это можно сделать с помощью PHP, чтобы я мог обрабатывать все запросы на моем сервере?

Ответы [ 4 ]

3 голосов
/ 30 января 2011

PHP не может сделать это самостоятельно, поскольку он не включает библиотеку рендеринга HTML.

Вы можете найти внешний метод захвата скриншотов и связи с этим методом с помощью PHP.

Для начала вам понадобится настроить систему, чтобы делать скриншоты.Изучите IECapt (http://iecapt.sourceforge.net/), CutyCapt (http://cutycapt.sourceforge.net/) или khtml2png (http://khtml2png.sourceforge.net/)) и настройте один из них в системе.

Затем настройте PHP-скрипт, который будет выполнять () скриншот, принимая приложение и возвращаяданные в браузер.

Например:

<?php
$in_url = 'http://' . $_REQUEST['url']; // !!INSECURE!! In production, make sure to sanitize this input!
$filename = '/var/cutycapt/images/' . $_REQUEST['url'] . '.png'; // Will probably need to normalize filename too, this is just an illustration

// First check the file does not exist, if it does exist skip generation and reuse the file
// This is a super simple caching system that will help to reduce the resource requirements
if(!file_exists($filename)) {
  exec('/usr/local/bin/CutyCapt --url="' . $_REQUEST['url'] . '" --out="' . $filename . '"');
}

// Second check if the file exists, either from a previous run or from the above generation routine
if(file_exists($filename)) {
  header('Content-type: image/png');
  print file_get_contents($filename);
} else {
  header('Status: 500 Internal Server Error');
}
?>

Затем можно вызвать скрипт следующим образом:

http://localhost/screenshot.php?url=www.google.com

Создание скриншотов будетбыть интенсивно использующим процессор, поэтому я настоятельно рекомендую встроить какое-то кэширование файлов (то есть сохранить результаты вывода и проверить, есть ли у вас где-нибудь скриншот), возможно, даже систему очередей, чтобы ваш сервер скриншотов не получалперегружены.

1 голос
/ 30 января 2011

Ответ зависит от того, какую платформу вы используете. В любом случае, вот этот вопрос, заданный ранее.

Если вы хотите создавать скриншоты, основанные на командной строке без экрана, большинство подходов так или иначе связаны с Xvfb и / или установкой множества зависимостей / библиотек.

Linux:

khtml2png.sourceforge.net

mysql-apache-php.com / website_screenshot.htm

cutycapt.sourceforge.net

www.unruhdesigns.com / Новости / 2010/10 / с использованием-светлячок-на-безголовый-сервер к подпиточной скриншотам-оф-сайтов

окна:

iecapt.sourceforge.net

макинтош:

www.paulhammond.org / webkit2png /

РЕДАКТИРОВАТЬ: Конечно, это более чем возможно на чем-то вроде стоечного пространства и на любом общем хосте, который позволяет вам компилировать и устанавливать свой собственный код, например, webfaction.

ура

0 голосов
/ 30 января 2011

Тим, вероятно, прав, вы не можете сделать что-то подобное на общем хосте.

Реализация, которую я сделал, использовалась на выделенном сервере Linux и имела Xvfb , firefox и команда импорта.

Вы также можете проверить этот вопрос

0 голосов
/ 30 января 2011

Боюсь, что php не может справиться с такими задачами самостоятельно. Вы должны установить некоторые внешние библиотеки на сервере.

Возможный связанный ответ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...