Forøg annonceindtægterne 50-250% med Ezoic. En Google Certified Publishing Partner.
Forøg annonceindtægterne 50-250% med Ezoic. En Google Certified Publishing Partner.
 

PHP GD genereret billede Billedet kan ikke vises, fordi det indeholder fejl i Firefox

PHP GD genereret billede Billedet kan ikke vises, fordi det indeholder fejl i Firefox [Dansk]

Forøg annonceindtægterne 50-250% med Ezoic. En Google Certified Publishing Partner.
Forøg annonceindtægterne 50-250% med Ezoic. En Google Certified Publishing Partner.
 

Når du genererer et billede med PHP, f.eks. Tilføjer et vandmærke til et server-lagret billede ved hjælp af nedenstående kode eller lignende med JPEG i stedet for PNG, genereres muligvis ikke et billede, og det smides en fejl, der er direkte synlig på Firefox, men ikke på Chrome.

Denne type kode, på trods af at du arbejder på nogle servere, kan nu arbejde på nogle andre, nogle gange af uklare grunde. I mit tilfælde fungerede det fint fint lokalt, men produceret under fejl på internet server, billedet kan ikke vises fordi det indeholder fejl.

Problemet kan komme fra flere grunde, her er nogle af dem:

En udgang er allerede indstillet tidligere.

En ægte fejl fra billedgenerering.

Den forkerte billedtype bruges.

Billedbibliotek er ikke installeret.

$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 udgang er allerede indstillet tidligere

Selv om det ikke er hensigtsmæssigt, kan det f.eks. Være tilfældet, at andre tidligere scripts indeholdt mellemrum i slutningen - for at undgå denne fejl, skal du, som PHP anbefaler, ikke lukke scripts med PHP end tag?>

Derefter skal du bruge følgende kode, før du bruger headerfunktionen, for at sikre, at ethvert tidligere sæt overskrift kasseres

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

Og også denne funktion for at sikre, at der ikke er genereret nogen output før overskriften og billedet

ob_end_clean();

Dette løste problemet i mit tilfælde, og billedet blev korrekt vist igen.

En ægte fejl fra billedgenerering

Hvis en reel fejl blev kastet under billedgenerering, skal du sørge for at PHP er indstillet til at vise alle mulige fejltyper, og kontrollere de tilhørende logfiler for at kunne spore det og løse det.

Følgende kode vil gøre PHP rapporter alle fejl i loggen:

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

Du kan måske finde ud af, at der blev rapporteret nogle fejl, selvom de ikke blev vist i output-html på grund af serverkonfiguration.

Den forkerte billedtype bruges

Sørg for, at de billedtyper, du bruger, er korrekte, f.eks. Ved hjælp af denne kode for at skelne mellem png og jpeg.

Sørg også for at overskriften er korrekt i henhold til det anvendte output afhængigt af den anvendte billedgenereringsfunktion

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

Billedbibliotek er ikke installeret

For at sikre, at billedbibliotekerne er installeret. For at gøre det skal du køre funktionen phpinfo (); i et script og tjek output for følgende værdi relateret til PHP GD, grafikbiblioteket, der bruges af funktioner som imagepng ();

Hvis der mangler pakker, afhjælpes løsningen på din lokale konfiguration, enten ved at tilføje pakken ved hjælp af PEAR-kommandoer eller ved hjælp af den webhost-indbyggede løsning til pakkeinstallation.

Hvad skal man gøre, når imagejpeg eller imagepng ikke virker

I NotePad ++ skal du åbne PHP-filen, der kalder imagepng-funktionen, og gemme den, når du har gået til menuen Encoding> Convert til UTF-8 uden BOM.

I DreamWeaver skal du gå til Sideegenskaber> Titel / Kodning> Fjern markeringen Inkluder Unicode Signature (BOM).

Når PHP imagejpeg eller imagepng ikke virker, skyldes det højst sandsynligt, at PHP-filen er kodet med en BOM, en Bill of Material, og derfor sendes der ekstra information med billedet før billeddataene.

PHP imagejpeg og PHP imagepng-funktionerne er funktionen til at sende en billedkode direkte i serverresponsen.

PHP - imagepng virker ikke korrekt
PHP - imagepng funktion
PHP - imagejpeg funktion
Forøg annonceindtægterne 50-250% med Ezoic. En Google Certified Publishing Partner.
Forøg annonceindtægterne 50-250% med Ezoic. En Google Certified Publishing Partner.
 

Lignende artikler

Forøg annonceindtægterne 50-250% med Ezoic. En Google Certified Publishing Partner.
Forøg annonceindtægterne 50-250% med Ezoic. En Google Certified Publishing Partner.
 

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

Efterlad en kommentar

Dine data - krypteret. Identitet - anonym. Internethastighed - Superior.
Dine data - krypteret. Identitet - anonym. Internethastighed - Superior.