Imazhi i gjeneruar nga PHP GD Imazhi nuk mund të shfaqet sepse përmban gabime në Firefox

Imazhi i gjeneruar nga PHP GD Imazhi nuk mund të shfaqet sepse përmban gabime në Firefox

Kur gjeneron një imazh me PHP, për shembull duke shtuar një ujëra në një foto të ruajtur të serverit, duke përdorur kodin më poshtë ose një të ngjashëm me JPEG në vend të PNG, imazhi mund të mos gjenerohet fare dhe të hedh një gabim, i dukshëm direkt në Firefox, por jo në Chrome.

Ky kod, pavarësisht se punon në disa servera, tani mund të punojë në disa të tjera, ndonjëherë për arsye të panjohura. Në rastin tim, ai funksionoi në mënyrë të përsosur në nivel lokal, por u prodhua më poshtë gabimit në serverin e internetit, imazhi nuk mund të shfaqet sepse përmban gabime.

Çështja mund të vijë nga disa arsye, këtu janë disa prej tyre:

Një prodhim tashmë është vendosur më parë.

Një gabim i vërtetë nga gjenerimi i imazhit.

Përdoret tipi i gabuar i imazhit.

Biblioteka e imazheve nuk është instaluar.

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

Një prodhim tashmë është vendosur më parë

Edhe nëse jo qëllimisht, mund të ndodhë, për shembull, që skriptet e tjera të mëparshme përmbajnë hapësira në fund - për të shmangur këtë gabim, sigurohuni që, siç rekomandon PHP, të mos mbyllni skriptet me etiketën e PHP end?>

Pastaj, përpara se të përdorni funksionin e kokës, përdorni kodin e mëposhtëm për të siguruar që çdo header i vendosur më parë të hidhet poshtë

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

Dhe gjithashtu ky funksion për të siguruar që asnjë prodhim nuk është krijuar përpara kokës dhe imazhit

ob_end_clean();

Kjo zgjodhi çështjen në rastin tim dhe imazhi u shfaq përsëri në mënyrë korrekte.

Një gabim i vërtetë nga gjenerimi i imazhit

Në rast se një gabim i vërtetë u hodh gjatë krijimit të imazhit, sigurohuni që PHP të jetë i vendosur për të shfaqur të gjitha llojet e mundshme të gabimeve, dhe të kontrolloni regjistrimet korresponduese, në mënyrë që të jetë në gjendje për të gjetur dhe zgjidhur atë.

Kodi pasues do të bëjë PHP raporton të gjitha gabimet në log:

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

Ju mund të gjeni se disa gabime janë raportuar, edhe nëse ato nuk shfaqen në html output, për shkak të konfigurimit të serverit.

Përdoret tipi i gabuar i imazhit

Sigurohuni që tipet e imazhit që po përdorni janë të sakta, për shembull duke përdorur këtë kod për të dalluar midis png dhe jpeg.

Gjithashtu sigurohuni që header është i saktë në bazë të prodhimit të përdorur, në varësi të funksionit të gjenerimit të imazhit të përdorur

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

Biblioteka e imazheve nuk është instaluar

Për të siguruar që bibliotekat e imazhit janë instaluar. Për ta bërë këtë, drejto funksionin phpinfo (); në një skriptë dhe kontrolloni prodhimin për vlerën e mëposhtme në lidhje me PHP GD, bibliotekën grafike që përdoret nga funksione si imagepng ();

Në rast se mungojnë paketat, mënyra për zgjidhjen e saj varet nga konfigurimi juaj lokal, ose duke shtuar paketën duke përdorur komandat PEAR ose duke përdorur web host-in e ndërtuar në zgjidhje për instalimin e pakos.

Çfarë duhet të bëni kur imagejpeg ose imagepng nuk punojnë

Në NotePad ++, hapni skedarin PHP që e quan funksionin imagepng dhe ruajeni pasi të shkoni në menynë Encoding> Convert to UTF-8 pa BOM.

Në DreamWeaver, shkoni tek Properties Faqe> Titulli / Encoding> zgjidhni Zgjidhni Unicode Signature (BOM).

Kur PHP imagejpeg ose imagepng nuk po funksionon, ka më shumë gjasa për shkak të faktit se skedari PHP është koduar me një BOM, një dokument i materialit, prandaj informacionet shtesë dërgohen me imazhin para të dhënave të imazhit.

PHP imagejpeg dhe PHP imagepng funksionet përdoren për të dërguar një kod foto direkt në përgjigjen e serverit.

PHP - imagepng nuk punon si duhet
Funksioni PHP - imagepng
Funksioni PHP - imagejpeg

Artikuj të ngjashëm

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

Lini një koment