2011-02-28 83 views
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

也許你會圖像編碼爲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==" alt="image" /> 

我infered要做到這一點的一個請求。

+0

This wi如果你可以使用第二個腳本,那麼@Jan Zyka和@Dobiatowski解決方案會更好。 – mailo 2011-02-28 10:45:33

+1

這不適用於Internet Explorer <8並且具有嚴重的大小限制,並且還會破壞可玩性。多數情況下,這是一個壞主意 – 2011-02-28 10:47:13

+0

是的,我完全同意。但我想,這是唯一可能的方式,在一個請求中做這樣的處理,對嗎? – mailo 2011-02-28 10:48:43

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

>