How to display an inline image generated on the fly using PHP GD

浪尽此生 提交于 2020-01-29 17:18:05

问题


I am trying the generate an image on the fly by merging images using PHP GD. I want to know if there is a way I can display the image inside my webpage without the need of storing it somewhere on server.

Like for example I created the following code for merging the images...

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);
}

Now my html code till now was...

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

How should I call the php function so that it displays the image generated in the div I have designated for it.

Update: I found the use of Content-type: image/png but that would mean I will have to display the image on a separate page not inline.


回答1:


Convert it to Base64 with base64_encode and echo it as a dataURI in an img tag !

Inline Images with Data URLs




回答2:


You can either:

  1. Display the image as data: http://en.wikipedia.org/wiki/Data_URI_scheme (Warning: High bandwidth consumption.)
  2. Make a separate file that display the image, such as display_image.php

And use the code:

<img src="display_image.php">

With the header and code you have shown.




回答3:


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

and create your image in image.php, output with

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

You can also put the image creation part in the same script:

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'),'">';
    ...
}

Take care to prevent injections!



来源:https://stackoverflow.com/questions/4790218/how-to-display-an-inline-image-generated-on-the-fly-using-php-gd

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!