quality print imagecreatefromstring from php image binaryfiles

print - php: recrea y muestra una imagen a partir de datos binarios



php print image (5)

En caso de que solo desee la imagen, sin ningún html a su alrededor puede usar lo siguiente:

$filename = ''assets/test.png''; $original_image = file_get_contents($filename); $processed_image = process_the_image_somehow($original_image); header(''Content-type: ''.mime_content_type($filename)); header(''Content-Length: ''.strlen($processed_image)); echo $processed_image;

No debe olvidar el encabezado Content-Length; de lo contrario, no funcionará. También es posible que desee reemplazar mime_content_type () ya que está en desuso según los documentos.

¿Es posible recrear imágenes de datos binarios (procesarlos si es necesario) y mostrarlos, todo en el mismo guión? Algo como

// get and display image 1: $imagedata1 = file_get_contents(''assets/test.png''); $imagedata1 = process_using_gd_or_something($imagedata1); echo "<img src={$imagedata1} >"; // <-- IS THIS (OR EQUIVALENT) POSSIBLE? // get and display image 2: //etc...

Quiero evitar almacenar las imágenes en el disco después de procesarlas y obtenerlas desde allí, o usar un script externo ...


Esto es realmente posible usando imágenes en línea (llamadas URI de datos ).

Su etiqueta de imagen se vería así:

<img src="data:image/gif;base64,R0lGODlhEAAOALMAAOazToeHh0tLS/7LZv/0jvb29t/f3//Ub/ /ge8WSLf/rhf/3kdbW1mxsbP//mf///yH5BAAAAAAALAAAAAAQAA4AAARe8L1Ekyky67QZ1hLnjM5UUde0ECwLJoExKcpp V0aCcGCmTIHEIUEqjgaORCMxIC6e0CcguWw6aFjsVMkkIr7g77ZKPJjPZqIyd7sJAgVGoEGv2xsBxqNgYPj/gAwXEQA7" width="16" height="14" alt="embedded folder icon">

Por qué en su mayoría no son una buena idea:

  • La carga de la página se ralentizará porque la imagen debe buscarse antes de que la estructura HTML completa pueda cargarse y, por lo tanto, renderizarse. Aún más si está realizando operaciones adicionales en la imagen. Es probable que su sitio se sienta mucho más lento que si se tratara de una imagen externa.

  • Las imágenes en línea deben estar codificadas en base64, agregando un 33% a su tamaño .

Si está hablando de un sitio público de alto tráfico razonable, le recomendaría que guarde su imagen externamente y la guarde en caché. Si solo es para un proyecto pequeño, las imágenes en línea pueden funcionar para usted.


Otra posibilidad para usted es crear una secuencia de comandos que produzca los datos de imagen en la salida y dirigir el enlace a la misma.

image.php

$imagedata1 = file_get_contents(''assets/test.png''); $imagedata1 = process_using_gd_or_something($imagedata1); header(''Content-type: image/png''); echo $imagedata1;

other_pages.php:

echo "<img src=''image.php?some_params''>";

EDITAR: Perdón, me perdí el aviso de no querer un script externo, pero esta solución es más eficiente que codificar la imagen en base64.


Prueba esto...

$img=base64_encode($row[''PICTURE'']); <img alt="105x105" class="img-responsive" src="data:image/jpg;charset=utf8;base64,<?php echo $img ?>"/>


Puede hacerlo utilizando un URI de datos en el atributo src la imagen.

El formato es: data:[<MIME-type>][;charset="<encoding>"][;base64],<data>

Este ejemplo es directo de la página de Wikipedia sobre URI de datos :

<?php function data_uri($file, $mime) { $contents = file_get_contents($file); $base64 = base64_encode($contents); return (''data:'' . $mime . '';base64,'' . $base64); } ?> <img src="<?php echo data_uri(''elephant.png'',''image/png''); ?>" alt="An elephant" />