PHP GD gegenereerde afbeelding De afbeelding kan niet worden weergegeven omdat deze fouten bevat in Firefox

PHP GD gegenereerde afbeelding De afbeelding kan niet worden weergegeven omdat deze fouten bevat in Firefox

Bij het genereren van een afbeelding met PHP, bijvoorbeeld het toevoegen van een watermerk aan een server opgeslagen afbeelding, met behulp van de onderstaande code, of een vergelijkbare met JPEG in plaats van PNG, beeld mogelijk helemaal niet en gooi een fout, direct zichtbaar op Firefox, maar niet in Chrome.

Dit soort code kan, ondanks het werken op sommige servers, nu werken om een ​​andere, soms om onduidelijke redenen. In mijn geval werkte het prima lokaal, maar produceerde het onderstaande fout op de internetserver, de afbeelding kan niet worden weergegeven omdat deze fouten bevat.

Het probleem kan verschillende redenen hebben, hier zijn er een paar:

Er is al eerder een uitgang ingesteld.

Een echte fout bij het genereren van afbeeldingen.

Het verkeerde afbeeldingstype wordt gebruikt.

Afbeeldingsbibliotheek is niet geïnstalleerd.

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

Er is al eerder een uitgang ingesteld

Zelfs als het niet opzettelijk is, kan het bijvoorbeeld zo zijn dat andere vorige scripts aan het einde spaties bevatten - om deze fout te voorkomen, zorg er voor dat, zoals PHP aanbeveelt, scripts niet sluiten met een PHP-eindtag?>

Gebruik vervolgens de volgende code voordat u de header-functie gebruikt om ervoor te zorgen dat een eerder ingestelde koptekst wordt genegeerd

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

En ook deze functie om ervoor te zorgen dat er geen uitvoer is gegenereerd vóór de koptekst en afbeelding

ob_end_clean();

Dit loste het probleem in mijn geval op en de afbeelding werd opnieuw correct weergegeven.

Een echte fout bij het genereren van afbeeldingen

Als er tijdens het genereren van de afbeelding een echte fout is gegenereerd, zorg er dan voor dat PHP zo is ingesteld dat alle mogelijke soorten fouten worden weergegeven en controleer de bijbehorende logboeken om het op te sporen en op te lossen.

De volgende code zorgt ervoor dat PHP alle fouten in het logboek rapporteert:

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

U kunt er dan achter komen dat sommige fouten zijn gerapporteerd, zelfs als deze niet in de uitvoer-HTML voorkomen vanwege de serverconfiguratie.

Het verkeerde afbeeldingstype wordt gebruikt

Controleer of de typen afbeeldingen die u gebruikt correct zijn, bijvoorbeeld door deze code te gebruiken om onderscheid te maken tussen png en jpeg.

Zorg er ook voor dat de kop correct is volgens de gebruikte uitvoer, afhankelijk van de gebruikte beeldgeneratiefunctie

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

Afbeeldingsbibliotheek is niet geïnstalleerd

Om ervoor te zorgen dat de afbeeldingenbibliotheken zijn geïnstalleerd. Hiervoor voert u de functie phpinfo () uit; in een script en controleer de uitvoer voor de volgende waarde gerelateerd aan PHP GD, de grafische bibliotheek die wordt gebruikt door functies zoals imagepng ();

In het geval dat pakketten ontbreken, hangt de manier om het op te lossen af ​​van uw lokale configuratie, ofwel door het pakket toe te voegen met PEAR-commando's of door de in de webhost ingebouwde oplossing te gebruiken voor pakketinstallatie.

Wat te doen als imagejpeg of imagepng niet werkt

Open in NotePad ++ het PHP-bestand dat de imagepng-functie aanroept en sla het op nadat je naar het menu Encoding> Convert to UTF-8 zonder BOM bent gegaan.

Ga in DreamWeaver naar Pagina-eigenschappen> Titel / codering> haal het vinkje weg voor Inclusief Unicode-handtekening (BOM).

Wanneer PHP imagejpeg of imagepng niet werkt, is dit waarschijnlijk te wijten aan het feit dat het PHP-bestand is gecodeerd met een stuklijst, een stuklijst, en daarom wordt extra informatie verzonden met de afbeelding vóór de afbeeldingsgegevens.

De PHP imagejpeg- en PHP-imagepng-functies zijn functies die worden gebruikt om een ​​afbeeldingscode direct in de serverreactie te verzenden.

PHP - imagepng werkt niet goed
PHP - imagepng-functie
PHP - imagejpeg-functie

Vergelijkbare artikelen

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

laat een reactie achter