Web-es

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 establecida 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
PHP GD generated image The image cannot be displayed because it contains errors in Firefox : Error The image cannot be displayed because in contains errors on Firefox
  Error La imagen no se puede mostrar porque contiene errores en Firefox
$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:

PHP GD generated image The image cannot be displayed because it contains errors in Firefox : Dynamically generated image using PHP
 Imagen generada dinámicamente con PHP

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.

 

PHP GD generated image The image cannot be displayed because it contains errors in Firefox : PHP GD package details using the phpinfo() function
  Detalles del paquete PHP GD usando la función phpinfo ()

Fuentes