PHP GD-generearre ôfbylding De ôfbylding kin net werjûn wurde omdat it in Firefox-mist hat

PHP GD-generearre ôfbylding De ôfbylding kin net werjûn wurde omdat it in Firefox-mist hat

By it generearjen fan in byld mei PHP, bygelyks it oanmeitsjen fan in wettermarkearm nei in bewarre foto, brûk ûnderste koade, of as ferlykber mei JPEG ynstee fan PNG, kin miskien net ôfbylding makke wurde en in flater werjaan, direkt op Firefox sichtber, mar net op Chrome.

Dizze soarte koade kin, neidat it wurket op guon tsjinners, no op guon oare wurken, somtiden foar obscure redenen. Yn myn gefallen wurke se perfoarst fyn lokaal, mar makke ûnder fehler op ynternettsjinner, it byld kin net werjûn wurde omdat it flaters befettet.

It probleem kin komme fan ferskate redenen, hjir binne guon fan harren:

In útfier is al earder ynsteld.

In echte flater fan byldergeneraasje.

It ferkearde byldtype wurdt brûkt.

Ofbyldbibleteek is net ynstallearre.

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

In útfier is al earder ynsteld

Sels as it net bedoeld is it it gefal wêze dat bygelyks oare foarige skripten spaasjes op it ein set hawwe - om dit flater te foarkommen, soargje derfoar, as PHP oanbefellet, gjin skripts mei PHP-eint tagong te sluten?>

Dan brûke jo de folgjende koade foardat jo de funksje fan koptekst brûke om derfoar te soargjen dat elk earder opnij header is wegere

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

En ek dizze funksje om derfoar te soargjen dat der gjin útfier makke is foardat de header en byld is

ob_end_clean();

Dit slagge it probleem yn myn saak, en it byld wie wer wer werjûn.

In echte flater fan byldergeneraasje

As gefolch dat in echte fout by de generaasje fan de ôfbylding wiske is, moatte jo wiske dat PHP ynsteld is om alle mooglike soarten fout te sjen, en kontrolearje de oerienkommende logs, om it op te rjochtsjen en op te lossen.

Folgjende koade sil PHP rapporteare alle fouten yn 't log:

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

Jo kinne dan fine dat guon fouten rapportearre binne, sels as se net yn 'e útfier html ferskine, fanwege serverkonfiguraasje.

It ferkearde byldtype wurdt brûkt

Soargje derfoar dat de byldtypen dy jo brûke binne korrekt, bygelyks mei dizze koade om te ûnderskieden tusken png en jpeg.

Soargje ek dat de header korrekt is neffens de útfiering, hokker ôfhinklik fan 'e ôfbyldingsgeneraatsfunksje

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

Ofbyldbibleteek is net ynstallearre

Om derfoar te soargjen dat de ôfbyldingsbiblioteken binne ynstalleare. Om dat te dwaan, kinne de funksje phpinfo (); yn in skript, en kontrolearje de útfier foar de folgjende wearde yn ferbân mei PHP GD, de grafykbibleteek dat brûkt wurdt troch funksjes lykas imagepng ();

As gefal't pakkingen fermindere binne, is de manier om jo te lêzen ôfhinklik fan jo lokale konfiguraasje, troch it pakket te brûken mei PEAR-kommando's of gebrûk fan 'e webside dy't yn oplossing foar pakket ynstallaasje boud is.

Wat dwaan as imagejpeg of imagepng net wurket

Yn NotePad ++ iepenje de PHP-bestân dy 't de imagepng funksjonearret, en bewarje it nei it menu kodearring> Convert to UTF-8 sûn BOM.

Gean nei Side Properties> Titel / kodearring> Uncheck Unicode Signature (BOM) yn DreamWeaver ynfoegje.

Wannear PHP imagejpeg of imagepng net wurket, dan is it wierskynlik it gefolch dat it PHP bestân mei in BOM, in Bill Of Material kodearre is, en dus ekstra ynformaasje wurdt stjoerd mei itôfbylding foar de ôfbyldingsgegevens.

De funksje PHP imagejpeg en PHP-ôfbyldingsfunksje wurde funksjoneard om in foto-koade direkt yn 'e tsjinner antwurd te ferstjoeren.

PHP - imagepng wurket net goed
PHP - ôfbyldingfunksje
PHP - imagejpeg funksje

Similar articles

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

Lit in reaksje efter