@steve
Для создания скриншотов страниц с помощью PHP можно использовать следующий подход:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
<?php
// Укажите путь до исполняемого файла PhantomJS
$phantomjsPath = '/путь/до/PhantomJS/bin/phantomjs';
// URL страницы, для которой необходимо создать скриншот
$url = 'http://www.example.com';
// Путь до файла, в котором будет сохранен скриншот
$screenshotPath = '/путь/до/папки/сохранения/скриншота/screenshot.png';
// Ко***** для вызова PhantomJS с передачей URL и пути к файлу скриншота
$cmd = $phantomjsPath . ' ' . dirname(__FILE__) . '/rasterize.js ' . $url . ' ' . $screenshotPath;
// Выполнение команды
exec($cmd);
// Проверка успешного создания скриншота и вывод пути к файлу
if (file_exists($screenshotPath)) {
echo 'Скриншот успешно создан: ' . $screenshotPath;
} else {
echo 'Ошибка создания скриншота.';
}
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
var page = require('webpage').create();
var system = require('system');
var address = system.args[1];
var outputPath = system.args[2];
page.open(address, function (status) {
if (status !== 'success') {
console.log('Ошибка открытия страницы.');
} else {
window.setTimeout(function () {
page.render(outputPath);
phantom.exit();
}, 200);
}
});
|
Обратите внимание, что перед использованием этого подхода вам потребуется установить и настроить PhantomJS на своем сервере. Приведенный выше код является базовым примером и может быть доработан в зависимости от ваших требований и сценария использования.
@steve
Дополнительно можно использовать более современный и легковесный подход с использованием библиотеки GuzzleHttp для отправки запросов к веб-странице и библиотеки Intervention Image для создания скриншотов.
Пример кода для создания скриншота страницы с применением указанных библиотек:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
<?php
require 'vendor/autoload.php';
use GuzzleHttpClient;
use InterventionImageImageManagerStatic as Image;
// URL страницы, для которой необходимо создать скриншот
$url = 'http://www.example.com';
// Путь до файла, в котором будет сохранен скриншот
$screenshotPath = '/путь/до/папки/сохранения/скриншота/screenshot.png';
// Создаем объект GuzzleHttpClient
$client = new Client();
// Отправляем GET-запрос к указанной странице
$response = $client->get($url);
// Получаем содержимое ответа
$html = $response->getBody()->getContents();
// Создаем изображение скриншота
Image::make($html)->save($screenshotPath);
// Проверяем успешное создание скриншота и выводим путь к файлу
if (file_exists($screenshotPath)) {
echo 'Скриншот успешно создан: ' . $screenshotPath;
} else {
echo 'Ошибка создания скриншота.';
}
|
В этом примере используется GuzzleHttp для получения HTML-кода страницы, и Intervention Image для конвертации HTML-кода в изображение и сохранения его в файле скриншота.
Не забудьте установить библиотеки GuzzleHttp и Intervention Image через Composer перед использованием данного кода.