PHP GD generated image Изображението не може да се покаже, защото съдържа грешки в Firefox

PHP GD generated image Изображението не може да се покаже, защото съдържа грешки в 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 и го запазете, след като отидете в меню Encoding> Convert to UTF-8 без BOM.

В DreamWeaver отидете на Page Properties> Title / Encoding> махнете отметката от Include Unicode Signature (BOM).

Когато PHP imagejpeg или imagepng не работи, това най-вероятно се дължи на факта, че PHP файлът е кодиран с BOM, Bill of Material, и следователно се изпраща допълнителна информация с изображението преди данните за изображението.

Функциите на PHP imagejpeg и PHP imagepng са функция, използвана за изпращане на код на картина директно в отговора на сървъра.

PHP - imagepng не работи правилно
Функция PHP - imagepng
Функция PHP - imagejpeg

Прочетете още

Фото галерия

PHP GD generated image Изображението не може да се покаже, защото съдържа грешки в Firefox : Грешка Снимката не може да се покаже, защото съдържа грешки в Firefox
PHP GD generated image Изображението не може да се покаже, защото съдържа грешки в Firefox : Динамично генерирано изображение, използващо PHP
PHP GD generated image Изображението не може да се покаже, защото съдържа грешки в Firefox : Подробности за GP 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
بالضبط ما كنت أبحث عنه ، مثالي

Оставете коментар