不保存图片,直接在浏览器中显示图片

8

如何将内存中的图像放到浏览器中而不保存。

例如:

 function getImage()
 {

   $imageFile = imagecreatefromjpeg('Map.jpg');
   $imageObject = imagecreatefrompng('image2.png');
   imagealphablending($imageFile, true);    
   imagecopy(....);
   $ret = array($imageFile, $imageObject) ;  
   return $ret
 }
 <?php $ret = getImage(); ?>
 <img src = <?php $ret[0];? alt=''>

这是否可能,在不保存的情况下实现?
3个回答

4

3
也许如果你将图片编码为base64并以此方式使用,它会起作用:
 <?php
    $img_strbase64_encode($imgbinary);
    echo '<img src="data:image/jpg;base64,'.$img_str.'" />';
    ?>

HTML:

<img src="data:image/jpg;base64,R0lGODlhCgAKAJEAAAAAAP///81Wv81WvyH5BAEAAAMALAAAAAAKAAoAAAIUjIViq+x7QpunwXoZ lXFu/mjIUgAAOw==" alt="image" />

我猜您想在一个请求中完成此操作。

如果您只使用一个脚本文件,那么这将起作用。如果您可以使用第二个脚本,则@Jan Zyka和@Dobiatowski的解决方案更好。 - mailo
1
这在Internet Explorer < 8中无法工作,并且有严格的大小限制,还会破坏缓存。往往是一个不好的想法。 - Pekka
是的,我完全同意。但我想,这可能是唯一的可能方式,在一个请求中完成这样的处理,对吗? - mailo
是的,没错。因此,在一个请求中执行此操作是一个不好的主意。 - Pekka

2

您需要编写一个脚本,发送正确的标头,然后浏览器才能将其识别为图像。类似于以下内容:

<?php
ob_start();
// assuming you have image data in $imagedata
$length = strlen($imagedata);
header('Last-Modified: '.date('r'));
header('Accept-Ranges: bytes');
header('Content-Length: '.$length);
header('Content-Type: image/jpeg');
print($imagedata);
ob_end_flush();

?>


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接