Razorback: Probleme mit gd-lib

Beitrag lesen

Hallo zusammen,

ich habe folgendes Problem mit der gdlib in PHP:

Also ich habe auf meiner Seite ein Fotoalbum. Die Fotos sind idR in 1024x768 auf dem Server hinterlegt. Ruft man nun das Fotoalbum auf wird das erste Bild in einer verkleinerten Version (mit gdlib auf 350x233 verkleinert) angezeigt, darunter eine Menüzeile mit Buttons zum vor- und zurückblättern und ein Button der das Bild auf Wunsch in voller Grösse in einem neuen Fenster öffnet. So weit, so unspektakulär.

Da die gdlib an mehreren Stellen verwendet wird habe ich dafür eine eigene Datei erstellt >imageresize.php<. Die Dateinamen der Fotos sind in der Datenbank gespeichert. Soll nun ein Foto angezeigt werden sucht das Skript den entsprechenden Dateinamen $bild aus der DB und übergibt ihn zusammen mit der gewünschten neuen Grösse im Image-Tag an o.g. Skript um das Bild zu verkleinern:

$bild = 'fotos/2005/143.jpg';
<img src='skripte/imageresize.php?bild=$bild&neueBreite=350'>

Bei etwa der Hälfte Bilder funktioniert das perfekt, merkwürdigerweise bei den restlichen nicht. Alle Bilder sind in gleicher Art und Weise in der Datenbank aufgelistet, es sind auch alle Bilder korrekt hochgeladen, denn auch bei den Bildern wo das mit der Vorschau nicht klappt funktioniert die Darstellung in voller Grösse wenn man den entsprechenden Button klickt.

In meiner Verzweifelung habe ich die imageresize.php mal allein im Browser aufgerufen mit den entsprechenden Parametern um zu schauen was das Skript zurückgibt. Bei einem Bild wo die Vorschau funktioniert blieb das Fenster erwartungsgemäß leer (weil ja kein Image-Tag drin ist), bei einem Bild wo die Vorschau nicht funktioniert erschien folgendes:

CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), default quality

und darunter etwa 100 Zeilen Hyroglyphen, ich denke mal Binärcode von irgendwas...

Das daraus kein Foto angezeigt werden kann leuchtet mir zwar ein, aber warum kommt das nur manchmal und vor allem: Was ist das und wie kann ich es beheben ? Hat vielleicht jemand ne Idee ?

Die Datei imageresize.php sieht folgendermassen aus:

####imageresize.php############

$size=getimagesize($bild);
$breite=$size[0];
$hoehe=$size[1];

if($neueHoehe=="")
  {
      $neueHoehe=intval($hoehe*$neueBreite/$breite);
  }

$altesBild=ImageCreateFromJPEG($bild);
$neuesBild=imagecreatetruecolor($neueBreite,$neueHoehe);
ImageCopyResized($neuesBild,$altesBild,0,0,0,0,$neueBreite,$neueHoehe,$breite,$hoehe);
ImageJPEG($neuesBild);

###############################

Bin für alle Ideen dankbar.