@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 перед использованием данного кода.