Imagen generada por PHP GD La imagen no se puede mostrar porque contiene errores en Firefox

Imagen generada por PHP GD La imagen no se puede mostrar porque contiene errores en Firefox

Al generar una imagen con PHP, por ejemplo, agregar una marca de agua a una imagen almacenada en el servidor, usar el código siguiente o similar con JPEG en lugar de PNG, es posible que la imagen no se genere y arroje un error directamente visible en Firefox, pero no en Chrome

Este tipo de código, a pesar de trabajar en algunos servidores, ahora podría funcionar en algunos otros, a veces por razones oscuras. En mi caso, funcionó perfectamente bien localmente, pero produjo el error debajo del servidor de Internet, la imagen no se puede mostrar porque contiene errores.

El problema puede provenir de varias razones, estas son algunas de ellas:

Una salida ya ha sido configurada previamente.

Un error genuino de la generación de imágenes.

Se usa el tipo de imagen equivocado.

La biblioteca de imágenes no está instalada.

$stamp = imagecreatefrompng('watermark.png');
if(!$im = imagecreatefrompng('image.png')) die('Error generating image');
$marge_right = $marge_bottom = 10;
$sx = imagesx($stamp);
$sy = imagesy($stamp);

$copyimage = imagecopy($im, $stamp, imagesx($im) - $sx - $marge_right, imagesy($im) - $sy - $marge_bottom, 0, 0, imagesx($stamp), imagesy($stamp));

header('Content-type: image/png');
if(!imagepng($im)) die('Error generating image');
if(!imagedestroy($im)) die('Error generating image');
if(!imagedestroy($stamp)) die('Error generating image');

Una salida ya ha sido establecida previamente

Incluso si no intencionalmente, podría ser el caso, por ejemplo, que otros scripts anteriores contenían espacios al final. Para evitar este error, asegúrese de que, como recomienda PHP, no cierre scripts con la etiqueta PHP final?

Luego, antes de usar la función de encabezado, use el siguiente código para asegurarse de que cualquier encabezado previamente configurado se descarte

foreach (getallheaders() as $name => $value) {
header_remove($name);
}

Y también esta función para asegurarse de que no se haya generado ninguna salida antes del encabezado y la imagen

ob_end_clean();

Esto resolvió el problema en mi caso, y la imagen se visualizó correctamente de nuevo.

Un error genuino de la generación de imágenes

En caso de que se haya producido un error real durante la generación de la imagen, asegúrese de que PHP esté configurado para mostrar todos los tipos posibles de errores, y verifique los registros correspondientes, para poder rastrearlo y resolverlo.

El siguiente código hará que PHP informe todos los errores en el registro:

error_reporting(E_ALL);
ini_set('display_errors', '1');

A continuación, puede descubrir que se informaron algunos errores, incluso si no aparecían en el html de salida, debido a la configuración del servidor.

Se usa el tipo de imagen equivocado

Asegúrese de que los tipos de imagen que está utilizando sean correctos, por ejemplo, use este código para distinguir entre png y jpeg.

También asegúrese de que el encabezado sea correcto de acuerdo con la salida utilizada, dependiendo de la función de generación de imágenes utilizada

//to generate png image
header('Content-type: image/png');
if(!imagepng($im)) die('Error generating image');
//to generate jpeg image
header('Content-type: image/jpeg');
if(!imagejpeg($im)) die('Error generating image');

La biblioteca de imágenes no está instalada

Para asegurarse de que las bibliotecas de imágenes estén instaladas. Para hacerlo, ejecute la función phpinfo (); en un script, y verifique el resultado del siguiente valor relacionado con PHP GD, la biblioteca de gráficos que es utilizada por funciones como imagepng ();

En caso de que falten paquetes, la forma de resolverlos depende de su configuración local, agregando el paquete usando los comandos PEAR o usando la solución integrada de host web para la instalación del paquete.

Qué hacer cuando imagejpeg o imagepng no está funcionando

En NotePad ++, abra el archivo PHP que llama a la función imagepng y guárdelo después de ir al menú Codificación> Convertir a UTF-8 sin BOM.

En DreamWeaver, vaya a Propiedades de página> Título / Codificación> desmarque Incluir firma Unicode (BOM).

Cuando PHP imagejpeg o imagepng no funciona, lo más probable es que el archivo PHP haya sido codificado con una lista de materiales, una lista de materiales y, por lo tanto, se envíe información adicional con la imagen antes de los datos de la imagen.

Las funciones PHP imagejpeg y PHP imagepng son funciones utilizadas para enviar un código de imagen directamente en la respuesta del servidor.

PHP - imagepng no funciona correctamente
PHP - función imagepng
PHP - función imagejpeg

Artículos similares

Comentarios (6)

Irvin Vasquez, 2018-08-19
Simple, clear and well explained, many thanks
Joyce Lawrence, 2018-08-19
ありがとう、非常に有益な
Catherine Roberts, 2018-08-19
Dokładnie tego, czego szukałem, idealnie
Headlinext, 2018-08-19
जानकारी का महान टुकड़ा, साझा करने के लिए धन्यवाद
Marshel, 2018-08-19
विश्वास नहीं कर सकता कि मुझे अंत में समाधान मिला, यह लंबे समय तक एक दुःस्वप्न था, अब हल हो गया
porcateraC, 2018-08-19
بالضبط ما كنت أبحث عنه ، مثالي

Deja un comentario