Web

PHP GD сгенерированное изображение Изображение не может быть отображено, поскольку оно содержит ошибки в Firefox

При создании изображения с помощью PHP, например, добавление водяного знака на сохраненное изображение сервера, с использованием кода ниже или аналогичного с JPEG вместо PNG, изображение может вообще не создаваться и вызывать ошибку, непосредственно видимую в Firefox, но не на Chrome.

Такой код, несмотря на работу на некоторых серверах, теперь может работать над некоторыми другими, иногда по неясным причинам. В моем случае он работал отлично нормально локально, но при ошибке ниже на интернет-сервере изображение не отображалось, поскольку оно содержит ошибки.

Проблема может быть вызвана несколькими причинами: вот некоторые из них:

  • Выход уже установлен ранее
  • Настоящая ошибка в генерации изображений
  • Используется неправильный тип изображения
  • Библиотека изображений не установлена
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
Ошибка Изображение невозможно отобразить, поскольку в нем содержатся ошибки в 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');

Выход уже установлен ранее

Даже если это не преднамеренно, может быть, например, что другие предыдущие сценарии содержали пробелы в конце — чтобы избежать этой ошибки, убедитесь, что, как рекомендует PHP, не закрывать скрипты с помощью тега PHP end ?>

Затем, прежде чем использовать функцию заголовка, используйте следующий код, чтобы убедиться, что любой ранее установленный заголовок отбрасывается

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

А также эта функция, чтобы убедиться, что выходной сигнал не был сформирован перед заголовком и изображением

ob_end_clean();

Это решило проблему в моем случае, и изображение было правильно отображено снова:

PHP GD generated image The image cannot be displayed because it contains errors in Firefox : Dynamically generated image using PHP
Динамически сгенерированное изображение с использованием PHP

Настоящая ошибка в генерации изображений

Если во время генерации изображения возникла настоящая ошибка, убедитесь, что PHP установлен для отображения всех возможных ошибок и проверки соответствующих журналов, чтобы иметь возможность отслеживать и разрешать его.

Следующий код заставит PHP сообщать обо всех ошибках в журнале:

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

Затем вы можете узнать, что сообщалось о некоторых ошибках, даже если они не отображались в выходном html из-за конфигурации сервера.

Используется неправильный тип изображения

Убедитесь, что используемые вами типы изображений верны, например, используя этот код, чтобы различать png и jpeg.

Также убедитесь, что заголовок правильно соответствует используемому выходу, в зависимости от используемой функции генерации изображения

//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');

Библиотека изображений не установлена

Чтобы убедиться, что библиотеки изображений установлены. Для этого запустите функцию phpinfo (); в скрипте и проверить вывод для следующего значения, связанного с PHP GD, графической библиотекой, которая используется такими функциями, как imagepng ();

В случае отсутствия пакетов способ его решения зависит от вашей локальной конфигурации либо путем добавления пакета с помощью команд PEAR, либо с помощью встроенного в веб-узел решения для установки пакета.

 

PHP GD generated image The image cannot be displayed because it contains errors in Firefox : PHP GD package details using the phpinfo() function
Сведения о пакете PHP GD с использованием функции phpinfo ()

источники