Thumbnail generieren funktioniert nicht

Tilox

Grünschnabel
Hallo zusammen,

ich sitz hier vor einem kleinen / großen Problem, dass mich höchstwahrscheinlich bald in den Wahnsinn treiben wird ;)

Ich hab hier ein Bilderuploadscript (dürfte glaub ich von hier stammen), das soweit ohne Probleme funktioniert. Nun versuche ich seit ein paar Stunden, das ganze so zu erweitern, dass von den hochgeladenen Bildern noch ein Thumbnail erstellt wird - ohne Erfolg. :(

Nachfolgend der Code - vielleicht kann mir jemand weiterhelfen.

PHP:
<?php
	session_start();
	include_once('sessionhelpers.inc.php');
	include('db.php');
	
	// Prüfen ob User eingeloggt ist
	if ( !logged_in() ) {
    echo <<<END
	
	// Ausgabe Fehlermeldung: Zugriff verweigert
	<div style="background-color:#FF9999; height:30px">Zugriff verweigert! Sie sind nicht eingeloggt!</div>
END;
	}

	// Falls User nicht eingeloggt, Laden der Seite abbrechen
	if ( !logged_in() ) {
	exit(); 
}


?>

<?php
	
function watermark($image, $watermark, $save_as, $position=5, $transparency=20, $t_x=0, $t_y=0) {
 
    // Erlaubte Dateiformate: PNG und JPEG
    if($position < 1 || $position > 9)
        return FALSE;
    if(!file_exists($image) || !file_exists($watermark))
        return FALSE;
    $infos_img = getimagesize($image);
    $infos_wat = getimagesize($watermark);
    if(!in_array($infos_img[2], array(2,3)) ||     !in_array($infos_wat[2], array(2,3)))
        return FALSE;
    if($infos_img[0]<$infos_wat[0] || $infos_img[1]<$infos_wat[1])
        return FALSE;
    if($infos_wat[0]<$t_x || $infos_wat[1]<$t_y)
        return FALSE;
    $transparency = 100 - $transparency;
    if($transpareny < 0 || $transpareny > 100)
        return FALSE;
    	
 
    // Position x
    switch (($position-1)%3) {
        case 0:
            $pos_x = 0;
            break;
        case 1:
            $pos_x = round(($infos_img[0]-$infos_wat[0])/2, 0);
            break;
        case 2:
            $pos_x = $infos_img[0]-$infos_wat[0];
            break;
    }
    // Position y
    switch (floor(($position-1)/3)) {
        case 0:
            $pos_y = 0;
            break;
        case 1:
            $pos_y = round(($infos_img[1]-$infos_wat[1])/2, 0);
            break;
        case 2:
            $pos_y = $infos_img[1]-$infos_wat[1];
            break;
    }
    // Wasserzeichen
    if($infos_img[2] == 2)
        $img_image = imagecreatefromjpeg($image);
    if($infos_img[2] == 3)
        $img_image = imagecreatefrompng($image);
    if($infos_wat[2] == 2)
        $img_watermark = imagecreatefromjpeg($watermark);
    if($infos_wat[2] == 3)
        $img_watermark = imagecreatefrompng($watermark);
    imagealphablending($img_image, TRUE);
    imagealphablending($img_watermark, TRUE);
    imagecolortransparent($img_watermark, imagecolorat($img_watermark, $t_x, $t_y));
    imagecopymerge($img_image, $img_watermark, $pos_x, $pos_y, 0, 0, $infos_wat[0], $infos_wat[1], $transparency);
    if(strtolower(substr($save_as, -3)) == "png") {
        if(imagepng($img_image, $save_as))
            return TRUE;
        else
            return FALSE;
    } else {
        if(imagejpeg($img_image, $save_as))
            return TRUE;
        else
            return FALSE;
    }
    return FALSE;
}
 

// Prüfen des Array $_FILES 
if (isset($_FILES["datei"])) 
{ 
   foreach ($_FILES["datei"] as $ids=>$dateieninfos) 
   {       
      if ($ids == "name") 
      {                   
         foreach ($dateieninfos as $id=>$info) 
         {             
            // Upload-Status          
            if ($_FILES["datei"]["error"][$id] == UPLOAD_ERR_OK) 
            {                   
               // Muster zur Überprüfung der im Dateinamen 
               // enthaltenen Zeichen (Optional) 
               $regExp = "/^[a-z_]([a-z0-9_-]*\.?[a-z0-9_-])*\.[a-z]{3,4}$/i"; 
                
               // Dateiname und Dateigrösse 
               if (preg_match($regExp,$_FILES["datei"]["name"][$id]) && $_FILES["datei"]["size"][$id] > 0 && $_FILES["datei"]["size"][		               $id] < 1000000) 
               {             
                  // Temporäre Datei in das Zielverzeichnis des Servers verschieben. 
				  $uid = md5(uniqid(rand(), true));
				  $dir = '../newsbilder';
                  move_uploaded_file($_FILES["datei"]["tmp_name"][$id],"../newsbilder/". $uid .$_FILES["datei"]["name"][$id]); 
				  

                                  //Variablendefinition
				  $newsauthor = $_POST['newsauthor'];
				  $newstitel = $_POST['newstitel'];
				  $newsid = $_POST['newsid'];
				  $newstimestamp = $_POST['newstimestamp'];
				  $newssubline = $_POST['newssubline'];
				  $newstext = $_POST['newstext'];
				  
				  
				  $filename = $uid . $_FILES['datei']['name'][$id]; 
  				  print"<p>Upload erfolgreich!</p>$filename<br><img src=$dir/$filename  width=100 height=100>";
				  if(watermark("$dir/$filename", "$dir/watermark.png", "$dir/$filename", 5))
                  echo "<img src=\"$dir/$filename\">";
				  
  
				  //Verbindungsaufbau zur Datenbank
	   
   			      $link = mysql_connect($dbhost,$dbuser,$dbpass);
   			      mysql_select_db($dbname,$link);
				  

 			      //Eintrag des Dateinamens in die Datenbank
			$query="INSERT INTO `".$newsbilderupload."` (newstitel,bilddatei,newsauthor,newsid) values ('".$newstitel."','".$filename."','".$newsauthor."','".$newsid."')";
			mysql_query($query) or die (mysql_error());
 			mysql_close();
			   
                 
                  // Meldung ob erfolgreich oder nicht                  
                  echo "<b>Datei " . $_FILES["datei"]["name"][$id] . "</b> - Erfolgreich angelegt!<br>\n"; 
               } 
               else 
               { 
                  echo  "<b>Fehler bei " . $_FILES["datei"]["name"][$id] . "</b> - Im Dateinamen oder Dateigrössen Limit!<br>\n";                   
               } 
            } 
            else 
            {                
               echo  "<b>Fehler bei " . $_FILES["datei"]["name"][$id] . "</b> - Während der Übertragung aufgetreten!<br>\n";                
            } 
         }          
      }          
   } 
else 
{ 
echo "<b>Warnung:</b> - Dateiupload fehlgeschlagen!"; 
} 

?>
 
Moin, ist das eine Datei? Oder wie bindest du die funktion watermark() ein.
Und was geht nicht. Fehlermeldung?
 
Zuletzt bearbeitet:
Zurück