图像到浏览器而不保存

Posted

技术标签:

【中文标题】图像到浏览器而不保存【英文标题】:Image to browser without saving 【发布时间】:2011-02-28 10:36:41 【问题描述】:

如何将图像从内存中放入浏览器,而不保存。

例如:

 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=''>

这可能吗,不保存?

【问题讨论】:

【参考方案1】:

是的,

试试imagejpeg($img);

并放入渲染图像的 PHP 脚本的 &lt;img src= 路径

查看示例:http://php.net/manual/en/function.imagecreatefromjpeg.php

【讨论】:

【参考方案2】:

也许如果您将图像编码为 base64 并像这样使用它,它会起作用:

 <?php
    $img_str = base64_encode($imgbinary);
    echo '<img src="data:image/jpg;base64,'.$img_str.'" />';
    ?>

html

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

我推断您想在一个请求中执行此操作。

【讨论】:

这将适用于单个脚本文件,如果您负担得起使用第二个脚本,那么@Jan Zyka 和@Dobiatowski 解决方案会更好。 这在 Internet Explorer 是的,我完全同意。但我想,这是唯一可能的方法,在一个请求中进行这样的处理,对吗? 是的,没错。因此,在一个请求中执行此操作是个坏主意【参考方案3】:

您应该有一个发送正确标题的脚本,然后它应该被浏览器识别为图像。比如:

<?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();

?>

【讨论】:

以上是关于图像到浏览器而不保存的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET - 如何在浏览器中显示图像而不将图像保存在临时文件中?

调整图像大小并显示而不保存

smartgwt 保存图像文件而不是在浏览器中显示

保存网络浏览器中显示的图像

如何将 PIL 生成的图像发送到浏览器?

生成pdf而不将其保存到磁盘然后将其显示给浏览器