mehrere Thumbnails von einer Datei erzeugen

silicone

Grünschnabel
Hallo,

nun hab ich dank eurer Hilfe ein tolles Script zur Thumbnailerzeugung und schon bahnt sich das nächste Problem an:

Ich möchte nun, dass mir das Script zwei Thumbs in unterschiedlicher Größe und in unterschiedlichen Ordnern erstellt.
Kann doch eigendlich nicht so schwer sein, oder?
Leider verlassen mich meine Kenntnisse, so dass ich euch um Hilfe bitten möchte.

Hier nun das Script, wie es z. Z. benutzt wird:

PHP:
function createThumb($source, $destination = "", $width = 245, $max_height = 170)
{
    list($src_width, $src_height, $type) = getimagesize($source);
    switch ($type)
    {
        case 1: $src_img = imagecreatefromgif($source);  break;
        case 2: $src_img = imagecreatefromjpeg($source); break;
        case 3: $src_img = imagecreatefrompng($source);  break;
        default: return false;
    }
    $dst_height = (int)round($width * $src_height / $src_width);
    $dst_img = imagecreatetruecolor($width,
        min($dst_height, $max_height));
    $dst_y = (int)round((imagesy($dst_img) - $dst_height) / 2);
    imagecopyresampled($dst_img, $src_img, 0, $dst_y, 0, 0,
        $width, $dst_height, $src_width, $src_height);
    if (empty($destination)) $destination = $source;
    $destination = preg_replace('/\.[a-z]+$/i', '.jpg',
        $destination);
    imagejpeg($dst_img, $destination);
    return true;
}
Schönen Gruß und Danke im Vorraus,
Silli
 
:confused: Du musst doch einfach nur die gepostete Funktion zweimal mit unterschiedlichen Parametern aufrufen.
PHP:
createThumb($source, "verzeichnis1/bild1", 245, 170);
createThumb($source, "verzeichnis2/bild2", 100, 60);
 
<idiot>ich</idiot>

Natürlich!

Danke, dass du mir die Augen für meine eigene Blödheit geöffnet hast.

Gruß,
Silli
 
So, schon kommt das nächste Problem :-(

Habe das Script jetzt mit upload-funktionalität gepaart.
PHP:
<?

switch (true) {  
case ($_FILES):
$my_data = $_FILES;  
break;

case ($HTTP_POST_FILES):  
$my_data = $HTTP_POST_FILES;  
break;  
}
$thumb_path ="./../thumbs/";
$upload_path="./../bilder/";
$max_size=10240000;

if ((isset($my_data['datei'])) && ($my_data['datei']['size']<=$max_size)){

	// evtl. statt @move_uploaded_file @copy benutzen
	if (move_uploaded_file($my_data['datei']['tmp_name'],$upload_path.$my_data['datei']['name']) ) {
		createThumb($upload_path.$my_data['datei']['name'],"",245,170);
		createThumb($upload_path.$my_data['datei']['name'],$thumb_path.$my_data['datei']['name'],100,60);
                $success=true;
	}else{
		$success=false;
	}
}else{
	$success=false;
}


function createThumb($source, $destination, $width, $max_height)
{ 
    list($src_width, $src_height, $type) = getimagesize($source); 
    switch ($type) 
    { 
        case 1: $src_img = imagecreatefromgif($source);  break; 
        case 2: $src_img = imagecreatefromjpeg($source); break; 
        case 3: $src_img = imagecreatefrompng($source);  break;
        default: return false; 
    }
    $dst_height = (int)round($width * $src_height / $src_width); 
    $dst_img = imagecreatetruecolor($width,
        min($dst_height, $max_height)); 
    $dst_y = (int)round((imagesy($dst_img) - $dst_height) / 2); 
    imagecopyresampled($dst_img, $src_img, 0, $dst_y, 0, 0,
        $width, $dst_height, $src_width, $src_height); 
    if (empty($destination)) $destination = $source; 
    $destination = preg_replace('/\.[a-z]+$/i', '.jpg', 
        $destination); 
    imagejpeg($dst_img, $destination); 
    return true; 
}


?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
	<title>flash_upload</title>
<script language="JavaScript" type="text/javascript">
<!--
function doCmd(val){
parent.oben.document.flashfilm.TGotoLabel("/upload_mc",val);
}
// end hiding contents -->
</script>
</head>
<?if($success==true){?>
<body onLoad="doCmd('success');document.location.href='upload.html'">
<?}else{?>
<body onLoad="doCmd('error');document.location.href='upload.html'">
<?}?>
</body>
</html>

Funktioniert auf dem lokalen Server wunderbar mit jedem Bild. Online macht er aber leider Mukken...
Ab einer bestimmten Bildgröße skaliert das Bild nicht mehr oder nicht richtig und wird dann unskaliert abgelegt.
Fehlermeldung gibt es nicht(timeout, oder so).

Was kann ich nun machen, damit das Skript auch online ?

Gruß,
Silli
 
Unterscheide bitte die Dateigröße und die Größe, die ein Bild im Speicher zum Bearbeiten belegt.
 
Auf dem Webspace (Domainbox) läuft u. A. auch ein CMS. Damit hab ich das Hochladen der Bilder auch probiert. Funktioniert dort einwandfrei auch mit Thumbnailerzeugung.

Nochmal: Wie kann ich das Script beeinflussen, damit die Bilder nach dem Upload auch resized werden?

Gruß,
Silli
 
Hat sich erledigt.

Die "Versuchsbilder" hatten die Endung ".JPG".
Die Scripte haben sich mit der Groß-Kleinschreibung verhaspelt...
 
Zurück