PHP GD sukurtas vaizdas Vaizdas negali būti rodomas, nes jame yra klaidų Firefox

PHP GD sukurtas vaizdas Vaizdas negali būti rodomas, nes jame yra klaidų Firefox

Sukurdami vaizdą naudodami PHP, pavyzdžiui, pridedant vandens ženklą prie serverio išsaugoto paveikslėlio, naudodami žemiau kodą arba panašų, kuriame yra JPEG, o ne PNG, vaizdas gali būti ne visiškai generuojamas ir išmesti klaidą, tiesiogiai matomą Firefox, bet ne "Chrome".

Šis kodo tipas, nežiūrint į kai kurių serverių darbą, dabar gali veikti kai kuriais kitais, kartais dėl neaiškių priežasčių. Mano atveju, jis veikė puikiai gerai vietos, bet pagamintas žemiau klaidos interneto serverio, vaizdas negali būti rodomas, nes jame yra klaidų.

Problema gali kilti dėl kelių priežasčių, čia yra keletas iš jų:

Produkcija jau buvo nustatyta anksčiau.

Tikroji vaizdo sugavimo klaida.

Naudojamas netinkamas vaizdo tipas.

Vaizdo biblioteka nėra įdiegta.

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

Produkcija jau buvo nustatyta anksčiau

Net jei tai nėra tyčia, gali būti, kad galų gale, pavyzdžiui, kad kiti ankstesni scenarijai buvo tarpų, galų gale - norėdami išvengti šios klaidos, įsitikinkite, kad PHP rekomenduoja ne uždaryti scenarijus su PHP pabaigos žyma?>

Tada, prieš naudodami antraštės funkciją, naudokite šį kodą, kad įsitikintumėte, jog anksčiau nustatyta antraštė yra atmesta

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

Taip pat šią funkciją įsitikinkite, kad prieš antraštę ir vaizdą nebuvo sukurta jokios išvesties

ob_end_clean();

Tai išsprendė problemą mano atveju, ir vaizdas buvo teisingai rodomas dar kartą.

Tikroji vaizdo sugavimo klaida

Jei vaizdo formavimo metu buvo išmestas tikroji klaida, įsitikinkite, kad PHP yra rodomas visas galimas klaidų rūšis ir patikrinkite atitinkamus žurnalus, kad galėtumėte juos sekti ir išspręsti.

Po šio kodo PHP praneša visas klaidas žurnale:

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

Tada galite sužinoti, kad buvo pranešta apie kai kurias klaidas, net jei jie nebuvo rodomi išvesties html dėl serverio konfigūracijos.

Naudojamas netinkamas vaizdo tipas

Patikrinkite, ar naudojami vaizdo tipai yra teisingi, pavyzdžiui, naudodami šį kodą, kad būtų galima atskirti png ir jpeg.

Taip pat įsitikinkite, ar antraštė yra teisinga pagal naudojamą išvestį, priklausomai nuo naudojamos vaizdo generavimo funkcijos

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

Vaizdo biblioteka nėra įdiegta

Įsitikinkite, kad įdiegtos vaizdo bibliotekos. Norėdami tai padaryti, paleiskite funkciją phpinfo (); scenarijuje ir patikrinkite išvesties vertę, susijusią su PHP GD, grafikos biblioteka, kuri naudojama tokiomis funkcijomis kaip imagepng ();

Trūkstamų paketų atveju tai priklauso nuo vietinės konfigūracijos, pridėjus paketą naudojant PEAR komandas arba naudojant paketų diegimo sprendime įdiegtą interneto prieglobos programą.

Ką daryti, kai imagejpeg arba imagepng neveikia

„NotePad ++“ atidarykite PHP failą, kuris vadina „imagepng“ funkciją, ir išsaugokite jį po meniu Kodavimas> Konvertuoti į UTF-8 be BOM.

„DreamWeaver“ eikite į puslapio ypatybes> Pavadinimas / kodavimas> panaikinkite žymę Įtraukti Unicode parašą (BOM).

Kai „PHP imagejpeg“ arba „imagepng“ neveikia, greičiausiai tai yra dėl to, kad PHP failas buvo užkoduotas BOM, Material of Material, todėl papildoma informacija siunčiama kartu su vaizdu prieš vaizdo duomenis.

PHP imagejpeg ir PHP imagepng funkcijos yra funkcijos, naudojamos atvaizdo kodui tiesiogiai siųsti į serverio atsaką.

PHP - imagepng neveikia tinkamai
PHP - imagepng funkcija
PHP - imagejpeg funkcija

Panašūs straipsniai

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

Palikite komentarą