2011-02-28 29 views
8

¿Cómo puedo poner la imagen de la memoria en el navegador, sin guardarla?Imagen con el navegador sin guardar

Por ejemplo:

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

Es esto posible, sin guardar?

Respuesta

3

Tal vez si desea codificar la imagen de base 64 y utilizarlo como esa, que funcionaría:

<?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" /> 

I infered que desea hacer esto en una solicitud.

+0

este wi Trabajaré con un único archivo de script, si puede permitirse usar un segundo script, entonces las soluciones de @Jan Zyka y @Dobiatowski son mejores. – mailo

+1

Esto no funcionará en Internet Explorer <8 y tiene límites de tamaño severos, y también destruye la capacidad de caché. La mayoría de las veces es una mala idea –

+0

Sí, estoy totalmente de acuerdo. Pero supongo que esa es la única forma posible de hacer tal procesamiento en una sola solicitud, ¿estoy en lo correcto? – mailo

2

Debe tener un script que envíe los encabezados adecuados y luego debe ser reconocido como una imagen por el navegador. Algo así como:

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

>

Cuestiones relacionadas