Generovaný obrázok PHP GD Obrázok sa nedá zobraziť, pretože obsahuje chyby vo Firefoxe

Generovaný obrázok PHP GD Obrázok sa nedá zobraziť, pretože obsahuje chyby vo Firefoxe [Slovenský]

Pri vytváraní obrázka s PHP, napríklad pridaním vodoznaku na server uložený obrázok, použitím nižšie uvedeného kódu alebo podobného súboru vo formáte JPEG namiesto PNG, nemusí byť obraz generovaný vôbec a hádzať chybu priamo viditeľnú v prehliadači Firefox, ale nie v prehliadači Chrome.

Takýto kód, napriek tomu, že pracuje na niektorých serveroch, môže teraz pracovať na niektorých iných, niekedy z nejasných dôvodov. V mojom prípade to fungovalo dokonale lokálne, ale na webovom serveri sa vyskytla chyba, obrázok sa nedá zobraziť, pretože obsahuje chyby.

Problém môže prísť z niekoľkých dôvodov, tu sú niektoré z nich:

Výstup bol už predtým nastavený.

Skutočná chyba pri vytváraní obrázkov.

Používa sa nesprávny typ obrázka.

Knižnica obrázkov nie je nainštalovaná.

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

Výstup bol už predtým nastavený

Aj keď to nie je úmyselné, môže to byť napríklad prípad, že ostatné predchádzajúce skripty obsahovali medzery na konci - aby sa zabránilo tejto chybe, uistite sa, ako odporúča PHP, že neuzavrieť skripty s koncovou značkou PHP?>

Potom pred použitím funkcie hlavičky použite nasledujúci kód, aby ste sa uistili, že predtým nastavená hlavička je zlikvidovaná

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

A tiež túto funkciu, aby sme sa uistili, že pred záhlavím a obrázkom nebol vygenerovaný žiadny výstup

ob_end_clean();

Tento problém som vyriešil v mojom prípade a obrázok bol opäť správne zobrazený.

Skutočná chyba pri vytváraní obrázkov

V prípade, že počas vytvárania obrázkov došlo k skutočnej chybe, skontrolujte, či je PHP nastavené na zobrazenie všetkých možných druhov chýb a skontrolujte príslušné záznamy, aby ste ich mohli sledovať a vyriešiť.

Nasledujúci kód bude PHP hlási všetky chyby v denníku:

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

Potom by ste mohli zistiť, že boli hlásené niektoré chyby, aj keď sa nezobrazili vo výstupnom html, kvôli konfigurácii servera.

Používa sa nesprávny typ obrázka

Uistite sa, že typy obrázkov, ktoré používate, sú správne, napríklad pomocou tohto kódu rozlišovať medzi png a jpeg.

Taktiež sa uistite, že záhlavie je správne podľa použitého výstupu v závislosti od použitej funkcie generovania obrazu

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

Knižnica obrázkov nie je nainštalovaná

Uistite sa, či sú knižnice obrázkov nainštalované. Ak to chcete urobiť, spustite funkciu phpinfo (); v skripte a skontrolujte výstup pre nasledujúcu hodnotu týkajúcu sa PHP GD, grafickej knižnice, ktorá sa používa funkciami ako imagepng ();

V prípade, že balíky chýbajú, spôsob riešenia závisí od vašej lokálnej konfigurácie, a to buď pridaním balíka pomocou príkazov PEAR, alebo použitím webového hostiteľa vstavaného riešenia pre inštaláciu balíka.

Čo robiť, keď imagejpeg alebo imagepng nefunguje

V programe Poznámkový blok ++ otvorte súbor PHP, ktorý volá funkciu imagepng, a uložte ho po prechode do ponuky Kódovanie> Previesť na UTF-8 bez kusovníka.

V aplikácii DreamWeaver prejdite na položku Vlastnosti stránky> Názov / Kódovanie> Zrušiť začiarknutie políčka Zahrnúť podpis Unicode (BOM).

Keď PHP imagejpeg alebo imagepng nefunguje, je to s najväčšou pravdepodobnosťou spôsobené tým, že súbor PHP bol zakódovaný kusovníkom, kusovníkom, a preto sa s obrazom odosielajú ďalšie informácie pred obrazové údaje.

PHP imagejpeg a PHP imagepng funkcie sú používané na posielanie obrazového kódu priamo v odpovedi servera.

PHP - imagepng nefunguje správne
PHP - funkcia imagepng
PHP - funkcia imagejpeg

Podobné články

Komentáre (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
بالضبط ما كنت أبحث عنه ، مثالي

Zanechať komentár

Zvýšte tržby z reklamy o 50-250% s nástrojom Ezoic. Certifikovaný partner spoločnosti Google pre publikovanie.
Zvýšte tržby z reklamy o 50-250% s nástrojom Ezoic. Certifikovaný partner spoločnosti Google pre publikovanie.
 
Zvýšte tržby z reklamy o 50-250% s nástrojom Ezoic. Certifikovaný partner spoločnosti Google pre publikovanie.
Zvýšte tržby z reklamy o 50-250% s nástrojom Ezoic. Certifikovaný partner spoločnosti Google pre publikovanie.