PHP - "FPDF error: not a PNG file", aber das Bild ist
Ich bin derzeit läuft in eine sehr seltsame Problem mit fpdf. Ich stellte eine ähnliche Frage ohne Antwort: nicht eine PNG-Datei in FPDF. Ich habe ein Bild hochgeladen über einen browser auf meinem file-server, und zog dann in ein fpdf-Bericht. Wenn dieses Bild ist ein png, ich bekomme die Fehlermeldung: "FPDF error: not a PNG file". Ich bekomme keine Fehler wenn das hochgeladene Bild ist ein jpg. Dieses Problem scheinbar über Nacht erschien vor ein paar Wochen.
Sogar fremden, es ist nur passiert mit den neuen png hochgeladen werden. Es war eine png in einem Bericht, wurde die Erzeugung in Ordnung. Wenn ich heruntergeladen habe die png aus dem system und neu hochgeladen, der Fehler erschien wieder.
Hier sind einige der Schritte, die ich gemacht habe beim Versuch das Problem zu beheben:
- Ich habe dafür gesorgt, das Bild ist eigentlich ein png (über die Eigenschaften).
-
Nichts geändert hat mit der Art und Weise habe ich seit dem speichern der Bilder, aber hier ist der code:
$original = $time."_".$name."_o.".$extension; $thumbnail = $time."_".$name."_t.".$extension; include('SimpleImage.php'); $image = new SimpleImage(); $image->load($_FILES['file']['tmp_name']); $image->save($A_path."images/".$original); $image->resizeToHeight(200); $image->save($A_path."images/thumbs/".$thumbnail); $photo = "images/".$original; $thumb = "images/thumbs/".$thumbnail;
- Ich habe überprüft, um zu sehen, ob Ihre waren änderungen im PNG-format oder FPDF-updates, mit kein Glück.
- Ich habe Umgerechnet ein jpg, das funktioniert in png durch gimp.
- Umwandlung von png zu jpg durch gimp und dann das hochladen der jpg um das system erzeugt keine Fehler.
WORKAROUND - ich bin Voraus gegangen, und konvertiert png 's in jpg' s auf speichern, eher als eine re-Codierung des Bildes. Vielen Dank für die Hilfe.
- Öffnen Sie das Bild mit Editor oder notepad++, wenn die ersten paar chars nicht enthalten, 'PNG' es ist nicht eine png-Datei
- Zum Glück (oder leider?), PNG scheint in den ersten paar chars.
- Nun, das ist irgendwie standard für png-Dateien, so dass Sie jetzt wissen, es ist nicht nicht ein png
- PNG scheint in den ersten paar chars.
- Was bedeutet "pngcheck -v-Datei.png" sagen? Wenn Sie nicht über pngcheck, was ist mit "identify-verbose Datei.png" sagen? Die Fehlermeldung zeigt an, dass es etwas falsch mit den ersten 8 bytes der Datei.
- Dieses kleine Programm sagt Ihnen, die details zu einem PNG-Bild (und auf Fehler geprüft) entropymine.com/jason/tweakpng
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fixed it, indem Sie das Bildformat manuell auf JPG und dann den Vorgang wiederholen.
Die Fehlermeldung zeigt an, dass es etwas falsch mit den ersten acht bytes der Datei ("png-Signatur").
Verwenden "od -c | head -1" zu inspizieren, um die ersten 16 bytes. Jede PNG-Datei
beginnt mit diese:
Wenn Sie es vorziehen, verwenden Sie "xxd-Datei.png | head -1" und erwarten, dass dies zu sehen:
Diese 16 Byte werden die PNG-Unterschrift und die Länge und den Namen der ersten chunk. Die ersten 8 bytes sind die format -
name, plus Zeilenumbrüche (Zeilenvorschübe) und carriage returns sind so konzipiert, dass
um zu erkennen, verschiedene übertragungsfehler. Die nächsten 8 bytes sind der Anfang
der IHDR-chunk, der muss Länge=13, ausgedrückt als ein 4-byte-integer-Zahl, und der name="IHDR".
Sehen die PNG-Spezifikation für details.
89 50 4e 47-0d 0a 1a 0a-00 00 00 0d-49 48 44 52 .PNG.... ....IHDR
, das scheint die gleichen Kopf-du gepostet hast. Mehr Gedanken?Überprüfen Sie die Tiefe des Bildes. FPDF unterstützt 24bit Tiefe (ich bin mir nicht sicher über 32bit Farbtiefe), weder unterstützt alpha-Kanal.
Ich würde versuchen, neu codieren zu png mit ImageMagick (oder paint.net unter windows).