PHP GD mynd mynd Ekki er hægt að sýna myndina vegna þess að hún inniheldur villur í Firefox

PHP GD mynd mynd Ekki er hægt að sýna myndina vegna þess að hún inniheldur villur í Firefox

Þegar mynd er mynduð með PHP, til dæmis að bæta við vatnsmerki á miðlara sem er geymd mynd, með því að nota kóðann hér að neðan eða svipuð með JPEG í stað PNG, gæti myndin ekki myndast á öllum og kastað villu sem er sýnilegur beint á Firefox en ekki á Chrome.

Þessi tegund af kóða, þrátt fyrir að vinna á sumum netþjónum, gæti nú unnið á einhverjum öðrum, stundum fyrir hreinar ástæður. Í mínu tilfelli, það virkaði fullkomlega fínt á staðnum, en framleitt undir villu á netþjóni, myndin er ekki hægt að birta vegna þess að hún inniheldur villur.

Málefnið getur komið frá nokkrum ástæðum, hér eru nokkrar af þeim:

Framleiðsla hefur þegar verið sett áður.

Ósvikinn villa frá mynda kynslóð.

Röng myndagerð er notuð.

Myndasafn er ekki uppsett.

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

Framleiðsla hefur þegar verið sett áður

Jafnvel þótt það sé ekki af ásettu ráði, gæti það verið til dæmis að önnur fyrri forskriftir innihéldu rými í lokin - til að koma í veg fyrir þessa villu skaltu ganga úr skugga um að PHP ekki mæli með að loka forskriftir með PHP endatakinu?

Síðan skaltu nota eftirfarandi kóða áður en þú notar hausaðgerðina til að ganga úr skugga um að allir fyrri stillingarhausi sé fargað

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

Og einnig þessa aðgerð til að tryggja að engin framleiðsla hafi verið búin til fyrir hausinn og myndina

ob_end_clean();

Þetta leysti málið í mínu tilfelli og myndin birtist rétt aftur.

Ósvikinn villa frá mynda kynslóð

Ef raunverulegur villa var kastað á myndatöku skaltu ganga úr skugga um að PHP sé valið til að sýna allar mögulegar tegundir af villum og athuga samsvarandi logs, til þess að geta fylgst með því og leysa það.

Eftirfarandi kóða mun gera PHP skýrslur allar villur í skránni:

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

Þú gætir þá fundið út að einhverjar villur hafi verið tilkynntar, jafnvel þótt þær væru ekki birtar í framleiðsla HTML, vegna miðlara stillingar.

Röng myndagerð er notuð

Gakktu úr skugga um að myndgerðirnar sem þú notar séu réttar, til dæmis með því að nota þennan kóða til að greina á milli png og jpeg.

Gakktu úr skugga um að hausinn sé réttur í samræmi við framleiðsluna sem notaður er, allt eftir því hvaða myndaröðunaraðgerð er notuð

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

Myndasafn er ekki uppsett

Til að tryggja að myndasöfnin séu uppsett. Til að gera það skaltu keyra aðgerðina phpinfo (); í handriti og athugaðu framleiðsluna fyrir eftirfarandi gildi sem tengjast PHP GD, grafíkasafnið sem er notað af aðgerðum eins og imagepng ();

Ef um er að ræða pakka vantar fer leiðin til að leysa það eftir staðbundnum stillingum þínum, annaðhvort með því að bæta við pakkanum með PEAR skipunum eða nota vefur gestgjafi sem er innbyggður í lausn til að setja upp pakka.

Hvað á að gera þegar imagejpeg eða imagepng virkar ekki

Í NotePad ++, opnaðu PHP skrána sem kallar á PicturePng virknina og vista það eftir að fara í valmyndina Encoding> Convert to UTF-8 without BOM.

Í DreamWeaver, farðu í Page Properties> Title / Encoding> hakaðu við Include Unicode Signature (BOM).

Þegar PHP imagejpeg eða imagepng virkar ekki, er líklegast vegna þess að PHP skráin hefur verið dulkóðuð með BOM, Bill of Material og því eru auka upplýsingar sendar með myndinni fyrir myndgögnin.

PHP imagejpeg og PHP imagepng aðgerðir eru notaðir til að senda myndskilaboð beint í svari miðlara.

PHP - imagepng virkar ekki rétt
PHP - imagepng virka
PHP - imagejpeg virka

Svipaðar greinar

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

Skildu eftir athugasemd