PHP GD generert bilde Bildet kan ikke vises fordi det inneholder feil i Firefox
Når du genererer et bilde med PHP, for eksempel å legge til et vannmerke til et server lagret bilde, ved hjelp av underkode eller lignende med JPEG i stedet for PNG, kan det hende at bildet ikke genereres og kaste en feil, som er direkte synlig på Firefox, men ikke på Chrome.
Denne typen kode, til tross for å jobbe på noen servere, kan nå fungere på noen andre, noen ganger av uklare grunner. I mitt tilfelle fungerte det perfekt fint lokalt, men produsert under feil på internett-server, bildet kan ikke vises fordi det inneholder feil.
Problemet kan komme fra flere grunner, her er noen av dem:
En utgang er allerede angitt tidligere.
En ekte feil fra bildegenerering.
Feil bildetype brukes.
Bildebiblioteket er ikke installert.
$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');
En utgang er allerede angitt tidligere
Selv om det ikke er forsettlig, kan det være tilfelle at andre tidligere skript inneholdt mellomrom på slutten - for å unngå denne feilen, må du, som PHP anbefaler, ikke lukke skript med PHP-endemerker?>
Deretter må du bruke følgende kode før du bruker topptekstfunksjonen for å sikre at eventuelle tidligere innstilte overskrifter kastes
foreach (getallheaders() as $name => $value) {
header_remove($name);
}
Og også denne funksjonen for å sikre at ingen utgang er generert før overskriften og bildet
ob_end_clean();
Dette løste problemet i mitt tilfelle, og bildet ble riktig vist igjen.
En ekte feil fra bildegenerering
Hvis en ekte feil ble kastet under bildegenerering, må du kontrollere at PHP er angitt for å vise alle mulige feiltyper, og sjekke tilhørende logger for å kunne spore det og løse det.
Har du lest?
Følgende kode vil gjøre PHP rapporter alle feil i loggen:
error_reporting(E_ALL);
ini_set('display_errors', '1');
Du kan da finne ut at noen feil ble rapportert, selv om de ikke ble vist i utdatamaterialet, på grunn av serverkonfigurasjonen.
Feil bildetype brukes
Kontroller at bildetyper du bruker er riktige, for eksempel ved hjelp av denne koden for å skille mellom png og jpeg.
Kontroller også at toppteksten er riktig i henhold til utgangene som brukes, avhengig av hvilken bildegenereringsfunksjon som brukes
//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');
Bildebiblioteket er ikke installert
For å være sikker på at bildebiblioteker er installert. For å gjøre det, kjør funksjonen phpinfo (); i et skript, og sjekk utgangen for følgende verdi relatert til PHP GD, grafikkbiblioteket som brukes av funksjoner som imagepng ();
Hvis pakker mangler, avhenger måten å løse det på, på grunn av din lokale konfigurasjon, enten ved å legge til pakken ved hjelp av PEAR-kommandoer, eller ved hjelp av webverten innebygd løsning for pakkeinstallasjon.
Hva å gjøre når imagejpeg eller imagepng ikke virker
I NotePad ++, åpne PHP-filen som kaller ImagePng-funksjonen, og lagre den etter å ha gått til menyen Koding> Konverter til UTF-8 uten BOM.
I DreamWeaver, gå til Sideegenskaper> Tittel / Koding> fjern merket Inkluder Unicode Signature (BOM).
Når PHP imagejpeg eller imagepng ikke virker, skyldes det sannsynligvis at PHP-filen er kodet med en BOM, en faktura, og derfor blir ytterligere informasjon sendt med bildet før bildedataene.
PHP imagejpeg og PHP imagepng-funksjonene er funksjonen som brukes til å sende en bildekode direkte i serverresponsen.
PHP - imagepng virker ikke riktigPHP - imagepng funksjon
PHP - imagejpeg funksjon

Yoann er en internasjonal bedriftskonsulent, tilrettelegger og koordinator. Han jobbet mer enn 10 år i global virksomhet, forsyningskjede, økonomiske, SAP ERP-prosjekter, Web- og SEO-optimalisering for ulike bransjer, som logistikk, kosmetikk, forbruksvarer, skjønnhetspleie eller mote, i mer enn 30 land rundt om i verden. .