Зображення з PHP GD Зображення не може відображатися, оскільки воно містить помилки в Firefox

Зображення з PHP GD Зображення не може відображатися, оскільки воно містить помилки в Firefox

Під час створення зображення за допомогою PHP, наприклад, додавання водяного знака до картинки, збереженої на сервері, за допомогою коду нижче або аналогічного з файлами JPEG замість PNG, зображення може не створюватися взагалі та виникати з помилкою, безпосередньо видимим у Firefox, але не на Chrome

Цей тип коду, незважаючи на роботу на деяких серверах, може тепер працювати на деяких інших, іноді за неясними причинами. У моєму випадку, він працював ідеально добре на місці, але вироблявся нижче помилки на інтернет-сервері, зображення не може відображатися, оскільки він містить помилки.

Питання може бути з кількох причин, ось деякі з них:

Вихід вже був встановлений раніше.

Справжня помилка під час створення зображення.

Неправильний тип зображення використовується.

Бібліотека зображень не встановлена.

$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?>

Потім перед використанням функції заголовка використовуйте такий код, щоб переконатися, що будь-який попередньо встановлений заголовок відкидається

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

А також цю функцію, щоб переконатися, що перед заголовком та зображенням не було створено жодного виводу

ob_end_clean();

Це вирішило проблему в моєму випадку, і зображення було правильно відображене знову.

Справжня помилка під час створення зображення

У випадку, коли під час створення зображення виникла реальна помилка, переконайтеся, що 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 або використання веб-хоста, вбудованого в рішення для встановлення пакета.

Що робити, коли imagejpeg або imagepng не працює

У програмі NotePad ++ відкрийте файл PHP, який викликає функцію imagepng, і збережіть його після переходу до меню Кодування> Перетворення в UTF-8 без специфікації.

У DreamWeaver перейдіть до пункту Властивості сторінки> Заголовок / кодування> зніміть прапорець Включити підпис Unicode (BOM).

Коли PHP imagejpeg або imagepng не працює, то, швидше за все, це пов'язано з тим, що файл PHP був закодований з BOM, Bill Of Material, і тому до зображення передаються додаткові відомості з зображенням.

Функції PHP imagejpeg і PHP imagepng є функцією, що використовується для відправки коду зображення безпосередньо у відповідь сервера.

PHP - imagepng не працює належним чином
Функція PHP - imagepng
Функція PHP - imagejpeg

Читати далі

Фотогалерея

Зображення з PHP GD Зображення не може відображатися, оскільки воно містить помилки в Firefox : Помилка Зображення не може відображатися, оскільки містить помилки у Firefox
Зображення з PHP GD Зображення не може відображатися, оскільки воно містить помилки в Firefox : Динамічне генерування зображень за допомогою PHP
Зображення з PHP GD Зображення не може відображатися, оскільки воно містить помилки в Firefox : Дані пакета PHP GD за допомогою функції phpinfo ()

Подібні статті

Коментарі (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
بالضبط ما كنت أبحث عنه ، مثالي

Залишити коментар