Mostrar imagen creada por imagejpeg

Creo una imagen con una función externa.

La función que devuelve los datos sin procesar de la imagen:

function create_image()
{
    ...
    ImageJPEG($myimg,NULL,85);
    $imgdata = ob_get_contents(); 
    ob_end_clean();          
    return $imgdata;
}

Mi script que debería mostrar cómo se ve la imagen:

$rawdata = create_image();
<img src="data:image/jpeg;base64,".base64_encode($rawdata)."" />

Ahora la imagen no está completa en el <img> etiqueta. Si hago la calidad 50 (con ImageJPEG($myimg,NULL,50);) la imagen se mostrará por completo. Si capturo los datos sin procesar y los escribo en el disco, la imagen estará completa en todas las calidades.

$rawdata = create_image();
$im = imagecreatefromstring($rawdata);
ImageJPEG($im,"./test.jpg",90);

Solo en el <img> etiqueta no funciona.

¿Alguien tiene una idea de por qué no funciona?

preguntado el 04 de julio de 12 a las 08:07

¿Cómo está enviando la imagen a una "etiqueta img"? ¿Como URL de datos? -

No, publico los datos sin procesar en la etiqueta img como se muestra arriba:

Bien que is una URL de datos. :) -

ok, lo siento, no sabía eso. Pensé que te referías a una URL de una imagen :-) -

Tenga en cuenta que este es un método muy ineficiente para generar imágenes y no funcionará en versiones anteriores de Internet Explorer. Sería mucho más preferible crear la imagen en un recurso de imagen separado. -

1 Respuestas

Personalmente, nunca he usado esta técnica, generalmente uso una etiqueta de imagen simple con mi image.jpg.php (por ejemplo) como imagen. Para esto pongo un header("Content-type: image/jpeg") en el archivo de imagen y simplemente repetir los datos.

Realmente nunca lo he probado con datos sin procesar, pero creo que esto sería preferible, especialmente para el mantenimiento (y la compatibilidad).

Respondido 04 Jul 12, 09:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.