PHP GD generiertes Bild Das Bild kann nicht angezeigt werden, da es in Firefox Fehler enthält

PHP GD generiertes Bild Das Bild kann nicht angezeigt werden, da es in Firefox Fehler enthält [Deutsche]

Wenn ein Bild mit PHP erzeugt wird, zum Beispiel ein Wasserzeichen zu einem Server gespeicherten Bild hinzufügen, unter Verwendung von Code oder ähnlichem mit JPEG anstelle von PNG, wird das Bild möglicherweise überhaupt nicht erzeugt und erzeugt einen Fehler, der direkt in Firefox sichtbar ist auf Chrome.

Diese Art von Code kann trotz der Arbeit auf einigen Servern nun auf anderen, manchmal aus obskuren Gründen funktionieren. In meinem Fall funktionierte es tadellos lokal, aber produziert unten Fehler auf Internet-Server, das Bild kann nicht angezeigt werden, weil es Fehler enthält.

Das Problem kann verschiedene Ursachen haben, hier einige davon:

Eine Ausgabe wurde bereits vorher festgelegt.

Ein echter Fehler bei der Bilderzeugung.

Der falsche Bildtyp wird verwendet.

Bildbibliothek ist nicht installiert.

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

Eine Ausgabe wurde bereits vorher festgelegt

Auch wenn es nicht beabsichtigt ist, könnte es beispielsweise der Fall sein, dass andere Skripte am Ende Leerzeichen enthielten - um diesen Fehler zu vermeiden, stellen Sie sicher, dass PHP Skripte nicht mit PHP End-Tags geschlossen werden

Verwenden Sie dann den folgenden Code, bevor Sie die Header-Funktion verwenden, um sicherzustellen, dass alle zuvor festgelegten Header verworfen werden

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

Und auch diese Funktion, um sicherzustellen, dass keine Ausgabe vor dem Header und Image generiert wurde

ob_end_clean();

Dies löste das Problem in meinem Fall, und das Bild wurde wieder korrekt angezeigt.

Ein echter Fehler bei der Bilderzeugung

Falls während der Bilderzeugung ein echter Fehler aufgetreten ist, vergewissern Sie sich, dass PHP alle möglichen Arten von Fehlern anzeigt, und überprüfen Sie die entsprechenden Protokolle, um sie aufzuspüren und zu lösen.

Der folgende Code wird dazu führen, dass PHP alle Fehler im Protokoll meldet:

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

Sie können dann feststellen, dass einige Fehler gemeldet wurden, auch wenn sie aufgrund der Serverkonfiguration nicht im Ausgabe-HTML erschienen sind.

Der falsche Bildtyp wird verwendet

Stellen Sie sicher, dass die verwendeten Bildtypen korrekt sind, zum Beispiel mit diesem Code, um zwischen png und jpeg zu unterscheiden.

Stellen Sie außerdem sicher, dass die Kopfzeile entsprechend der verwendeten Ausgabe korrekt ist, abhängig von der verwendeten Bilderstellungsfunktion

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

Bildbibliothek ist nicht installiert

Um sicherzustellen, dass die Bildbibliotheken installiert sind. Führen Sie dazu die Funktion phpinfo (); in einem Skript, und überprüfen Sie die Ausgabe für den folgenden Wert in Bezug auf PHP GD, die Grafikbibliothek, die von Funktionen wie imagepng () verwendet wird;

Falls Pakete fehlen, hängt die Lösung davon ab, ob Sie das Paket mithilfe von PEAR-Befehlen hinzufügen oder den integrierten Webhost für die Paketinstallation verwenden.

Was ist zu tun, wenn imagejpeg oder imagepng nicht funktioniert?

Öffnen Sie in NotePad ++ die PHP-Datei, die die imagepng-Funktion aufruft, und speichern Sie sie, nachdem Sie das Menü Encoding> Convert to UTF-8 without BOM aufgerufen haben.

Wechseln Sie in DreamWeaver zu Seiteneigenschaften> Titel / Kodierung> und deaktivieren Sie die Option Include Unicode Signature (BOM).

Wenn PHP imagejpeg oder imagepng nicht funktioniert, liegt dies höchstwahrscheinlich daran, dass die PHP-Datei mit einer Stückliste und einer Stückliste codiert wurde. Daher werden vor den Bilddaten zusätzliche Informationen mit dem Bild gesendet.

Die Funktionen PHP imagejpeg und PHP imagepng dienen zum Senden eines Bildcodes direkt in der Serverantwort.

PHP - imagepng funktioniert nicht richtig
PHP - Imagepng-Funktion
PHP - imagejpeg-Funktion

Ähnliche Artikel

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

Hinterlasse einen Kommentar

Steigern Sie den Anzeigenumsatz mit Ezoic um 50-250%. Ein von Google zertifizierter Publishing-Partner.
Steigern Sie den Anzeigenumsatz mit Ezoic um 50-250%. Ein von Google zertifizierter Publishing-Partner.
 
Steigern Sie den Anzeigenumsatz mit Ezoic um 50-250%. Ein von Google zertifizierter Publishing-Partner.
Steigern Sie den Anzeigenumsatz mit Ezoic um 50-250%. Ein von Google zertifizierter Publishing-Partner.