Преобразование HTML в изображение в php

Мне нужно создать изображение PNG/JPEG из PHP-скрипта.. Кратко

Код создаст html-таблицу и включит изображение на эту страницу. Мне нужно сохранить всю эту страницу как изображение, сохранить это изображение на моем сервере и вернуть путь к изображению (используя веб-сервис).

Я могу довольно хорошо создать изображение из функции imagejpg. Моя проблема заключается в том, как преобразовать этот HTML в изображение. Не могу сделать снимок экрана, потому что процессы происходят через веб-службы.

Пожалуйста, помогите мне преобразовать HTML в изображение с помощью php

заранее спасибо


person ramesh    schedule 16.03.2012    source источник
comment
Я только что создал полную HTML-страницу, включая MAP.... Мне нужно преобразовать весь этот HTML-код в изображение.. Пожалуйста, помогите.. Мне нужно поделиться HTML-кодом?   -  person ramesh    schedule 16.03.2012


Ответы (2)


Вы можете скачать wkhtmltoimage по этой ссылке. Существует версия для всех операционных систем, так что это не должно быть проблемой. Затем вы можете использовать его так:

$path="wkhtmltoimg/wkhtmltoimage.exe"; //path to your executable
$url="http://google.com";
$output_path="test.png";
shell_exec("$path $url $output_path");

Одна вещь, которую вы хотите отметить, это то, что если PHP находится в безопасном режиме, shell_exec не будет работать, и вы не сможете выполнить преобразование.

person Tom    schedule 29.03.2012

Вы можете использовать PHP PhantomJS, чтобы сохранить снимок экрана HTML-страницы на локальный диск:

<?php

use JonnyW\PhantomJs\Client;

$client = Client::getInstance();

$width  = 800;
$height = 600;
$top    = 0;
$left   = 0;

$request = $client->getMessageFactory()->createCaptureRequest('http://example.com', 'GET');
$request->setOutputFile('/path/to/save/capture/file.jpg');
$request->setViewportSize($width, $height);
$request->setCaptureDimensions($width, $height, $top, $left);

$response = $client->getMessageFactory()->createResponse();

// Send the request
$client->send($request, $response);
person João Pimentel Ferreira    schedule 11.05.2017