GD Lib: erzeugt Bilder sind immer schwarz!?

Der Held

Erfahrenes Mitglied
Hallo Leute, habe ein Problem mit einer Funktion die Thumbnails von bestehenden Bildern kreieren soll:

PHP:
/**
	 *Erstellt Thumbnail aus vorhandenem Bild mit den übergebenen Abmessungen
	 *
	 * @param String $img_res	Dateiname der Originalgrafik
	 * @param Int $width	Breite des Thumbnails
	 * @param Int $height	Höhe des Thumbnails
	 * @return unknown	false bei Fehlern, ansonsten true;
	 */

function createThumbnail($img_res, $width, $height){
	$original_res = 'uploads/tx_userkontaktuebersicht/'.$img_res;
	$thumb_res = 'uploads/tx_userkontaktuebersicht/th_'.$img_res;
	if (file_exists($original_res)) {
		if(file_exists($thumb_res)) return false;

		// Grösse feststellen
		$size  = getimagesize($original_res);

		switch($size[2]){
			// GIF
			case 1:
				$altesBild=ImageCreateFromGIF($original_res);
				$neuesBild=ImageCreate($width,$height);
				ImageCopyResized($neuesBild,$altesBild,0,0,0,0,$width,$height,$size[0],$$size[1]);
				if(!ImageGIF($neuesBild,$thumb_res)) return false;
				
				break;

			// JPG
			case 2:
				$altesBild=ImageCreateFromJPEG($original_res);
				$neuesBild=imagecreatetruecolor($width,$height);
				ImageCopyResized($neuesBild,$altesBild,0,0,0,0,$$width,$height,$size[0],$size[1]);
				if(!ImageJPEG($neuesBild, $thumb_res)) return false;
				break;

			// PNG
			case 3:
				$altesBild=ImageCreateFromPNG($original_res);
				$neuesBild=imagecreatetruecolor($width,$height);
				ImageCopyResized($neuesBild,$altesBild,0,0,0,0,$width,$height,$size[0],$size[1]);
				if(!ImagePNG($neuesBild,$thumb_res)) return false;
				break;
		}

	}

	return true;
}

Die Thumbnails werden in der richtigen Grösse erstellt, aber leider sind diese immer nur komplett schwarz. :-( Jemand ne Idee?
 
Hallo,
da waren ein paar $ Zeichen zu viel, so sollte es funktionieren:
PHP:
/**
     *Erstellt Thumbnail aus vorhandenem Bild mit den übergebenen Abmessungen
     *
     * @param String $img_res    Dateiname der Originalgrafik
     * @param Int $width    Breite des Thumbnails
     * @param Int $height    Höhe des Thumbnails
     * @return unknown    false bei Fehlern, ansonsten true;
     */

function createThumbnail($img_res, $width, $height){
    $original_res = 'uploads/tx_userkontaktuebersicht/'.$img_res;
    $thumb_res = 'uploads/tx_userkontaktuebersicht/th_'.$img_res;
    if (file_exists($original_res)) {
        if(file_exists($thumb_res)) return false;

        // Grösse feststellen
        $size  = getimagesize($original_res);

        switch($size[2]){
            // GIF
            case 1:
                $altesBild=ImageCreateFromGIF($original_res);
                $neuesBild=ImageCreate($width,$height);
                ImageCopyResized($neuesBild,$altesBild,0,0,0,0,$width,$height,$size[0],$size[1]);
                if(!ImageGIF($neuesBild,$thumb_res)) return false;
                
                break;

            // JPG
            case 2:
                $altesBild=ImageCreateFromJPEG($original_res);
                $neuesBild=imagecreatetruecolor($width,$height);
                ImageCopyResized($neuesBild,$altesBild,0,0,0,0,$width,$height,$size[0],$size[1]);
                if(!ImageJPEG($neuesBild, $thumb_res)) return false;
                break;

            // PNG
            case 3:
                $altesBild=ImageCreateFromPNG($original_res);
                $neuesBild=imagecreatetruecolor($width,$height);
                ImageCopyResized($neuesBild,$altesBild,0,0,0,0,$width,$height,$size[0],$size[1]);
                if(!ImagePNG($neuesBild,$thumb_res)) return false;
                break;
        }

    }

    return true;
}

mfg
forsterm
 
Danke für den Tipp, manchmal ist man echt Blind.
Mist auch dass das variable Bezeichner keinen Syntaxfehler darstellen, sonst käme einem da die IDE zu Hilfe. Weiss nicht wie oft ich mich darüber schon geärgert habe.
 
Genau das mein ich doch. Ist IMHO eine grosse Fehlerquelle in PHP-Scripts.
Aber woher soll die IDE denn wissen ob nun variable Variablenbezeichner gemeint sind oder nicht? Da in PHP keine expliziten Variablendeklaration notwendig sind, wie z.B. in JAVA kann die IDE auch nicht wissen ob man nun die bereits benutzte Variable $var oder fälschlicherweise $$var meint.
 
Hallo,

genau deswegen sollte man beim Entwickeln von PHP-Anwendungen die Einstellung error_reporting auf E_ALL setzen. Dann hätte man hier nämlich vermutlich einen Hinweis auf eine undefinierte Variable erhalten.

Grüße,
Matthias
 
Zurück