Как отобразить встроенное изображение, созданное на лету с помощью PHP GD - PullRequest
4 голосов
/ 25 января 2011

Я пытаюсь сгенерировать изображение на лету путем объединения изображений с помощью PHP GD. Я хочу знать, есть ли способ отобразить изображение на моей веб-странице без необходимости хранить его где-нибудь на сервере.

Как, например, я создал следующий код для объединения изображений ...

function create_image() {
   $main_image = imagecreatefrompng("images/main.png");
   $other_image = imagecreatefrompng("images/other.png");
   imagecopy($main_image, $other_image, 114, 53, 0, 0, 49, 34);
   imagepng($main_image);
   imagedestroy($other_image);
}

Теперь мой HTML-код до сих пор был ...

<div class="sidebar-avatar">
   <img src="avatar_pattern.png" class="pattern1" width="430" height="100" />
</div>

Как мне вызвать функцию php, чтобы она отображала изображение, созданное в div, который я для нее назначил.

Обновление : я нашел использование Content-type: image/png, но это означало бы, что мне придется отображать изображение на отдельной странице, а не в строке.

Ответы [ 3 ]

6 голосов
/ 09 сентября 2011

Преобразуйте его в Base64 с помощью base64_encode и отобразите его как dataURI в теге img!

Встроенные изображения с URL-адресами данных

4 голосов
/ 09 сентября 2011

Вы можете либо:

  1. Отображать изображение в виде данных: http://en.wikipedia.org/wiki/Data_URI_scheme (Предупреждение: высокая пропускная способность.)
  2. Создать отдельный файл, отображающий изображение, например display_image.php

И используйте код:

<img src="display_image.php">

С заголовком и кодом, который вы показали.

0 голосов
/ 13 июля 2016

<img src="image.php?other_image=(filename)">

и создайте изображение в image.php, выведите

header('Content-Type:image/png');imagepng($main_image);

Вы также можете поместить часть создания изображения в тот же скрипт:

if($other_image=$_GET['other_image'])
{
    // create image
    ...
    // output image
    header('Content-Type:image/png');
    imagepng($main_image);
}
else
{
    // default behaviour
    ...
    echo '<img src="',basename(__FILE__),'?other_image=',urlencode('images/other.png'),'">';
    ...
}

Будьте осторожны, чтобы избежать инъекций!

...