PHP GD generert bilde Bildet kan ikke vises fordi det inneholder feil i Firefox

PHP GD generert bilde Bildet kan ikke vises fordi det inneholder feil i Firefox [Norsk]

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.

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 riktig
PHP - imagepng funksjon
PHP - imagejpeg funksjon

Lignende artikler


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

Legg igjen en kommentar

Øk annonsenes inntekt 50-250% med Ezoic. En Google Certified Publishing Partner.
Øk annonsenes inntekt 50-250% med Ezoic. En Google Certified Publishing Partner.
 
Øk annonsenes inntekt 50-250% med Ezoic. En Google Certified Publishing Partner.
Øk annonsenes inntekt 50-250% med Ezoic. En Google Certified Publishing Partner.