PHP GD generated image Obrázek nelze zobrazit, protože obsahuje chyby ve Firefoxu

PHP GD generated image Obrázek nelze zobrazit, protože obsahuje chyby ve Firefoxu [Češka]

Při vytváření obrázku s PHP, například přidáním vodoznaku na server uložený obrázek, pomocí níže uvedeného kódu nebo podobného souboru s JPEG namísto PNG, nemusí být obraz vůbec generován a házet chybu přímo viditelnou ve Firefoxu, ale ne v prohlížeči Chrome.

Tento druh kódu, ačkoli pracuje na některých serverech, může nyní pracovat na jiných, někdy z nejasných důvodů. V mém případě to fungovalo naprosto dobře na lokální úrovni, ale na úrovni internetového serveru došlo k chybě, obrázek nelze zobrazit, protože obsahuje chyby.

Problém může pocházet z několika důvodů, zde jsou některé z nich:

Výstup byl již dříve nastaven.

Pravá chyba při generování snímků.

Používá se nesprávný typ obrazu.

Knihovna obrázků není nainstalována.

$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 byl již dříve nastaven

I kdyby to nebylo úmyslné, mohlo by to být například například to, že ostatní předchozí skripty obsahovaly mezery na konci - aby se zabránilo této chybě, ujistěte se, jak PHP doporučuje, neuzavírat skripty s koncovou značkou PHP?>

Poté před použitím funkce záhlaví použijte následující kód, abyste se ujistili, že se předtím nastavená záhlaví vyhodí

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

A také tuto funkci, abyste se ujistili, že před záhlaví a obrázkem nebyl vygenerován žádný výstup

ob_end_clean();

To v mém případě vyřešilo problém a obraz byl znovu správně zobrazen.

Pravá chyba při generování snímků

V případě, že během generování obrazu došlo k skutečné chybě, ujistěte se, že PHP je nastaveno tak, aby zobrazovalo všechny možné druhy chyb a zkontrolovalo příslušné protokoly, aby bylo možné je sledovat a vyřešit.

Následující kód bude PHP zprávy všechny chyby v protokolu:

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

Mohli byste zjistit, že byly hlášeny některé chyby, a to i v případě, že se neobjevily v html výstupu kvůli konfiguraci serveru.

Používá se nesprávný typ obrazu

Ujistěte se, že typy obrázků, které používáte, jsou správné, například pomocí tohoto kódu rozlišujte mezi png a jpeg.

Také se ujistěte, že záhlaví je správná podle použitého výstupu v závislosti na použité funkci generování 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');

Knihovna obrázků není nainstalována

Ujistěte se, že jsou nainstalovány knihovny obrázků. Chcete-li tak učinit, spusťte funkci phpinfo (); ve skriptu a zkontrolujte výstup pro následující hodnotu vztahující se k PHP GD, grafické knihovně používané funkcemi jako imagepng ();

Pokud chybí balíčky, způsob, jak je vyřešit, závisí na vaší místní konfiguraci, a to buď přidáním balíku pomocí příkazů PEAR nebo pomocí webového hostitele zabudovaného řešení pro instalaci balíčku.

Co dělat, když imagejpeg nebo imagepng nefunguje

V programu NotePad ++ otevřete soubor PHP, který volá funkci imagepng, a uložte jej po přechodu do nabídky Kódování> Převést na UTF-8 bez kusovníku.

V DreamWeaveru přejděte na Vlastnosti stránky> Název / Kódování> Zrušte zaškrtnutí políčka Zahrnout podpis Unicode (BOM).

Pokud PHP imagejpeg nebo imagepng nefunguje, je to s největší pravděpodobností způsobeno tím, že soubor PHP byl zakódován kusovníkem, kusovníkem, a proto jsou s obrazem před obrazovými daty zasílány další informace.

PHP imagejpeg a PHP imagepng funkce slouží k odesílání obrazového kódu přímo do odpovědi serveru.

PHP - imagepng nepracuje správně
Funkce PHP - imagepng
Funkce PHP - imagejpeg

Podobné články

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

Zanechat komentář

Zvyšte příjem reklam o 50-250% s Ezoic. Partner certifikovaný společností Google pro publikování.
Zvyšte příjem reklam o 50-250% s Ezoic. Partner certifikovaný společností Google pro publikování.
 
Zvyšte příjem reklam o 50-250% s Ezoic. Partner certifikovaný společností Google pro publikování.
Zvyšte příjem reklam o 50-250% s Ezoic. Partner certifikovaný společností Google pro publikování.