Durch imagecreatefromjpeg() kann Seite nicht mehr aufgerufen werden

Experience1986

Erfahrenes Mitglied
Hi,

ich hab mir gerade eine Funktion für Thumbnails von JPG, GIF und PNG Dateien gebastelt, nachdem schon eine Klasse den im Titel beschriebenen Effekt hervorief. Sobald ich in einem Script auf dem betreffenden Server die Funktion imagecreatefromjpeg() (bzw: imagecreatefromgif(), imagecreatefrompng()); aufrufe, bekommt der Browser die Rückmeldung: "Seite nicht gefunden".

Code:
  function CreateThumbnail($source, $target)
  {

    global $thumb_height;

	$ext = substr($source, -3);
	$ext = strtolower($ext);    return false;
	if (($ext == 'jpg') or ($ext == 'jpeg'))
       {
	     $f = @imagecreatefromjpeg($source);
	   }
      elseif($ext == 'gif')
       {
	     $f = @imagecreatefromgif($source);
	   }
      elseif($ext == 'png')
       {
	     $f = @imagecreatefrompng($source);
	   }
      else
       {
         return false;
       }

        $size=getimagesize($source);

        $srcH=$size[1];
        $srcW=$size[0];

        $percentW=($thumb_height/$srcH);

		$newH = $thumb_height;
		$newW = round($srcW*$percentW);

		$newImage = imagecreatetruecolor($newW, $newH);
		imagecopyresampled($newImage,$f,0,0,0,0,$newW,$newH,$srcW,$srcH);
		imagejpeg($newImage, $target, "70");
		return true;

  }

Bei mir auf dem lokalen Server läuft exakt der gleiche Code reibungslos. Ich vermute daher das dem Server etwas fehlt... Ich müsste also wissen was, kenne mich da nicht so aus.

PHPINFO: http://www.onceforgotten.de/modules/image_gallery/x.php

Dankbar für jeden sachdienlichen Hinweis ;-)
 
So, nach dem ich die @'s vor den imagecreatefrom***() entfernt habe, wird die Seite angezeigt, aber die Thumbnails werden nicht erstellt...

Wenn mir also dennoch jemand weiterhelfen könnte...
 
Die Dateien mit JPEG-Endungen sind bei mir garantiert auch JPEG-Grafiken!
Wie gesagt, lokal läuft es super.

Aber Danke für den Hinweis.
 
Bitte das nächste mal die [code=php] Tags statt [code] benutzen... ;)

Ansonsten:
PHP:
$ext = substr($source, -3);
	$ext = strtolower($ext);    return false;
	if (($ext == 'jpg') or ($ext == 'jpeg'))
       {
	     $f = @imagecreatefromjpeg($source);
	   }
Dir ist natürlich schon klar, dass jpeg nicht funktionieren kann wenn du nur die letzten 3 Buchstaben des Dateinamens liest? :)

mit getimagesize kannst du den Typen des Bildes direkt bestimmen.

PHP:
<?php
error_reporting(E_ALL);
  function CreateThumbnail($source, $target)
  {

    $thumb_height = "100";

	$size=getimagesize($source);
	
	$ext = $size[2];
	
	switch($ext) {
		case "1":
			$f = imagecreatefromgif($source);
		break;
		case "2":
			$f = imagecreatefromjpeg($source);
		break;
		case "3":
			$f = imagecreatefrompng($source);
		break;
		default:
			return false;
	}
		
    $srcH=$size[1];
    $srcW=$size[0];

    $percentW = $thumb_height/$srcH;

	$newH = $thumb_height;
	$newW = round($srcW*$percentW);
		
	$newImage = imagecreatetruecolor($newW, $newH);
	imagecopyresampled($newImage,$f,0,0,0,0,$newW,$newH,$srcW,$srcH);
	imagejpeg($newImage, $target, "70");
	return true;

}
?>
So funktioniert es bei mir.
Bei mir lag der Fehler darin, dass $thumb_height nicht definiert war und deshalb nichts passierte... jetzt klappt alles wunderbar.

Da schreibt man mal etwas mehr und wird direkt überrundet ;)
 
Hallo!

Du solltest den Tip von Gumbo aber schon beherzigen.
So kann ein *.jpg z.b. auch ein image/pjpeg sein..... gibt noch mehr Varianten.

Gruss Dr Dau
 
So, ich hab den Code von [FLEX] übernommen, und es geht noch immer nicht...

http://www.onceforgotten.de/modules/image_gallery/index.php
Dort läuft das Script, die betreffende Funktion wird ausgelöst, wenn man auf "Test-Gallerie" klickt.

Nun wird die Seite wieder nicht angezeigt... Brauch man denn für diese Bild-Funktionen speziele Libs für PHP? Wenn ja wo kann ich in der PHPINFO() nachlesen, ob die implementiert sind?
 
Die interessanten Einträge sind unter GD zu finden, der GD Library.
Dort sind aber alle vorhanden, so dass die Probleme nicht dort liegen können.
Hast du error_reporting() mal auf E_ALL gestellt?
Und gib mal testweise $thumb_height aus, ob der Wert auch wirklich gesetzt ist.
 
Den Fehlermeldungen nach zu urteilen, solltest du Zeichenketten explizit als solche auszeichnen. Aus einem $array[index] sollte demnach $array['index'] oder $array["index"] werden.
 
Außerdem solltest du beachten, dass register_globals auf OFF ist und $PHP_SELF somit nicht direkt ansprechbar ist, sondern über $_SERVER['PHP_SELF'] anzusprechen ist.
Siehe dazu auch: Vordefinierte Variablen
 
Zurück