(Hallo|Hi(ho)|Tag|Mahlzeit) mika,
beim Aufruf der PHP-Funktion "imagecreatefromgif" bekomme ich folgende Fehlermeldung:
Warning: imagecreatefromgif() [function.imagecreatefromgif]: XXX/XXX/xxx.gif' is not a valid GIF file in C:\Programme\xampp\htdocs\download\pdf.php on line 74
Dann ist diese Datei mit allerhöchster Wahrscheinlichkeit keine GIF-Datei. Du kannst relativ einfach feststellen, ob das der Fall ist: Die ersten 4 Bytes müssen (in ASCII) den String 'GIF8' enthalten. In einem Hex-Viewer sind das die Werte "47 49 46 38". Die Funktion GetImageSize() liefert dir das wirklich verwendete Dateiformat.
Der Hintergrund ist Folgender:
Ich möchte ein bestimmtes HTML-Dokument per PHP als PDF-File aufbereiten.
Dazu verwende ich die Open Source - Klasse FPDF.In diesem HTML-Dokument sind mehrere Gif-Bilder.
Da die Klasse FPDF mit dem Gif-Format nicht zurecht kommt, wandle ich die Bilder per PHP in JPEG-Bilder um.
Das ganze funktionierte mit einem Test-HTML-Dokument in das ich selbst gespeicherte Gif-Bilder untergebracht habe auch wunderbar.
Im Livebetrieb sieht es wiederum so aus, dass die Gif-Bilder, die in dem richtigen HTML-Dokument enthalten sind, selbst von einem anderen Skript dynamisch erstellt werden.
Eine (etwas naive) Zwischenfrage: Hast du geprüft, ob die Datei, die dein Script laden möchte, auch existiert? Dein Quellcode sagt: Nein.
Es besteht auch die Möglichkeit, dass die Dateiendung nicht ".gif" ist. Lass dir mal zur Kontrolle $function ausgeben. Auch sollte Rückgabewert von function_exists($function) TRUE sein, bevor du $function als Funktion benutzt. Dein Script ...
if($suffix != 'jpg') {
$function = 'imagecreatefrom'.$suffix;
$picture = $function($name);
... dürfte nämlich auf die Nase fallen, wenn $suffix irgendwas anderes enthält als "jpeg", "gif", "png" oder "wbmp". Es ist sicherer, den Dateityp mit getImageSize() zu ermitteln.
Und diese Bilder scheinen ein anderes Gif-Format zu haben als herkömmliche Gif-Bilder, die z.B. mit einem Grafikprogramm erstell/bearbeitet und dann abgespeichert wurden.
Meines Wissens gibt es nur zwei GIF-Formate: 87a und 89a. Mit beiden kann imageCreateFromGIF() im Rahmen seiner Möglichkeiten umgehen.
Gibt es in PHP eine Möglichkeit, damit die Funktion imagecreatefromgif (oder eine andere Funktion) mit diesem Bildformat klar kommt???
Du kannst dir u.A. von der FPDF-Projekt-Site ein Script downloaden, das GIF-Dateien nach JPEG, PNG und BMP konvertiert und das komplett in PHP geschrieben ist. Das liefert dir möglicherweise aufschlussreichere Fehlermeldungen als imageCreateFromGIF() ...
MffG
EisFuX