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



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

Nejdůležitější kritéria hostování webových stránek podle 10 odborníků

Nejdůležitější kritéria hostování webových stránek podle 10 odborníků

Výběr správného hostitele pro vaše webové stránky se může zdát složitý, zejména s ohledem na velké množství různých dostupných nabídek - pro začátečníka se může dokonce zdát nemožné učinit výběr.


Komentáře (6)

 2018-08-19  Irvin Vasquez
Simple, clear and well explained, many thanks
 2018-08-19  Joyce Lawrence
ありがとう、非常に有益な
 2018-08-19  Catherine Roberts
Dokładnie tego, czego szukałem, idealnie
 2018-08-19  Headlinext
जानकारी का महान टुकड़ा, साझा करने के लिए धन्यवाद
 2018-08-19  Marshel
विश्वास नहीं कर सकता कि मुझे अंत में समाधान मिला, यह लंबे समय तक एक दुःस्वप्न था, अब हल हो गया
 2018-08-19  porcateraC
بالضبط ما كنت أبحث عنه ، مثالي

Zanechat komentář