Thumbnails Problem

alex130

Erfahrenes Mitglied
Hi
Ich hab gerade ne function in mein Upload SCript eingebaut, aber die funktoniert nicht ganz, es kommt immer
Code:
Warning: imagejpeg(): Unable to open 'thumbs/image/465940-pic_cp_681.jpeg' for writing in /var/www/web14/html/img/upload.php on line 49
und hier ist mein Code:
PHP:
   function createThumb($img_src, $img_width , $img_height, $des_src) {
      $im = imagecreatefromjpeg($img_src);
      list($src_width, $src_height) = getimagesize($img_src);
      if($src_width >= $src_height) {
         $new_image_width = $img_width;
         $new_image_height = $src_height * $img_width / $src_width;
      }
      if($src_width < $src_height) {
         $new_image_height = $img_width;
         $new_image_width = $src_width * $img_height / $src_height;
      }
      $new_image = imagecreatetruecolor($new_image_width, $new_image_height);
      imagecopyresampled($new_image, $im, 0, 0, 0, 0, $new_image_width,$new_image_height, $src_width, $src_height);
      imagejpeg($new_image, $des_src. "/" .$img_src, 100);
   }
  
   $groesse = "150";

   createThumb($file, $groesse, $groesse, "thumbs");

$filename ist der Name der Datei und $file ist der Dateiname + Pfad also in dem Fall:
Code:
image/465940-pic_cp_681.jpeg
lg
 
Ich vermute, dass es ein Rechteproblem ist.

Hat PHP Schreibrechte für den Ordner?
 
Hi
Ja die CHMOD ist auf 777, aber ich hab gerade gesehen, dass da steht:
PHP:
'thumbs/image/180715-pic_cp_681.jpeg'
da muss etwas falsch angegeben sein, denn es sollte eigtl.
PHP:
'thumbs/180715-pic_cp_681.jpeg'
heißen.
Weißt du woran das liegt?
Thx
 
Hi
Sry dass ich nochmal nerve, aber ich hab jetzt ein besseres Script gefunden, allerdings funktoniert das auch nicht :(
Ich hab diesen Code:
PHP:
// Bilddaten feststellen 
  $size=getimagesize($file); 
  $breite=$size[0]; 
  $hoehe=$size[1]; 

  //hier die Breite festlegen 
  $neueBreite=150; 
  $neueHoehe=intval($hoehe*$neueBreite/$breite); 

  if($size[2]==1) { 
  // GIF 
  $altesBild=ImageCreateFromGIF($file); 
  $neuesBild=ImageCreate($neueBreite,$neueHoehe, "thumbs/"); 
  ImageCopyResized($neuesBild,$altesBild,0,0,0,0,$neueBreite,$neueHoehe,$breite,$hoehe); 
  ImageGIF($neuesBild); 
  } 

  elseif($size[2]==2) { 
  // JPG 
  $altesBild=ImageCreateFromJPEG($file); 
  $neuesBild=imagecreatetruecolor($neueBreite,$neueHoehe, "thumbs/"); 
  ImageCopyResized($neuesBild,$altesBild,0,0,0,0,$neueBreite,$neueHoehe,$breite,$hoehe); 
  ImageJPEG($neuesBild); 
  } 

  elseif($size[2]==3) { 
  // PNG 
  $altesBild=ImageCreateFromPNG($file); 
  $neuesBild=imagecreatetruecolor($neueBreite,$neueHoehe, "thumbs/"); 
  ImageCopyResized($neuesBild,$altesBild,0,0,0,0,$neueBreite,$neueHoehe,$breite,$hoehe); 
  ImagePNG($neuesBild); 
  }

Und bekomme immer diesen Fehler:
Code:
Warning: Wrong parameter count for imagecreatetruecolor() in /var/www/web14/html/img/upload.php on line 56

Warning: imagecopyresized(): supplied argument is not a valid Image resource in /var/www/web14/html/img/upload.php on line 57

Warning: imagejpeg(): supplied argument is not a valid Image resource in /var/www/web14/html/img/upload.php on line 58
das sind diese 3 zeilen:
PHP:
 $neuesBild=imagecreatetruecolor($neueBreite,$neueHoehe, "thumbs/"); 
  ImageCopyResized($neuesBild,$altesBild,0,0,0,0,$neueBreite,$neueHoehe,$breite,$hoehe); 
  ImageJPEG($neuesBild);
lg
 
Aso das wusste ich nicht.
Muss ich das "thumbs" jetzt bei ImageCopyResized oder bei ImageJpeg einfügen?
Thx
 
Das Speichern des Bildes übernimmt [phpf]imagejpeg[/phpf], von daher erwartet diese Funktion auch den Pfad als zweiten Parameter (inkl. Dateiname).
 
Danke nun funktoniert es, ich wusste nciht, dass man den Dateinamen auch dazu schreiben muss....
lg
 
Hi
Jetzt hab ich noch ein Problem, ich wollte, wenn das normale Bild z.B. breiter als 400px ist, es auch verkleinern, aber das funktoniert nicht.
Hier ist mein Code:
PHP:
<?php 

$_UPLOAD_CONFIG = Array (		
'filetype' => Array ('image/jpg','image/jpeg','image/png','image/gif'), 
'max-size' => "4194304",             
'target'   => "image/"     # target folder for uploads		
);


if(isset($_POST['submit']))
{

$tempname = $_FILES['file']['tmp_name']; 
$name = $_FILES['file']['name']; 
$rand = rand(0,1000000);

$type = $_FILES['file']['type']; 
$size = $_FILES['file']['size']; 

/////////////////////////////////////////////////////////////////////////////
function createThumb($file)
{
// Bilddaten feststellen 
  $size=getimagesize($file); 
  $breite=$size[0]; 
  $hoehe=$size[1]; 

  //hier die Breite festlegen 
  $neueBreite=150; 
  $neueHoehe=intval($hoehe*$neueBreite/$breite); 

  if($size[2]==1) { 
  // GIF 
  $altesBild=ImageCreateFromGIF($file); 
  $neuesBild=ImageCreate($neueBreite,$neueHoehe, "thumbs/"); 
  ImageCopyResized($neuesBild,$altesBild,0,0,0,0,$neueBreite,$neueHoehe,$breite,$hoehe); 
  ImageGIF($neuesBild); 
  } 

  elseif($size[2]==2) { 
  // JPG 
  $altesBild=ImageCreateFromJPEG($file); 
  $neuesBild=imagecreatetruecolor($neueBreite,$neueHoehe); 
  ImageCopyResized($neuesBild,$altesBild,0,0,0,0,$neueBreite,$neueHoehe,$breite,$hoehe); 
  ImageJPEG($neuesBild, "thumbs/".$filename.""); 
  } 

  elseif($size[2]==3) { 
  // PNG 
  $altesBild=ImageCreateFromPNG($file); 
  $neuesBild=imagecreatetruecolor($neueBreite,$neueHoehe, "thumbs/"); 
  ImageCopyResized($neuesBild,$altesBild,0,0,0,0,$neueBreite,$neueHoehe,$breite,$hoehe); 
  ImagePNG($neuesBild); 
  } 
  }
  
  function createImage($file)
  {
  // Bilddaten feststellen 
  $size=getimagesize($file); 
  $breite=$size[0]; 
  $hoehe=$size[1]; 

  //hier die Breite festlegen 
  $neueBreite=400; 
  $neueHoehe=intval($hoehe*$neueBreite/$breite); 

  if($size[2]==1) { 
  // GIF 
  $altesBild=ImageCreateFromGIF($file); 
  $neuesBild=ImageCreate($neueBreite,$neueHoehe); 
  ImageCopyResized($neuesBild,$altesBild,0,0,0,0,$neueBreite,$neueHoehe,$breite,$hoehe); 
  ImageGIF($neuesBild, "img/".$filename.""); 
  } 

  elseif($size[2]==2) { 
  // JPG 
  $altesBild=ImageCreateFromJPEG($file); 
  $neuesBild=imagecreatetruecolor($neueBreite,$neueHoehe); 
  ImageCopyResized($neuesBild,$altesBild,0,0,0,0,$neueBreite,$neueHoehe,$breite,$hoehe); 
  ImageJPEG($neuesBild, "img/".$filename.""); 
  } 

  elseif($size[2]==3) { 
  // PNG 
  $altesBild=ImageCreateFromPNG($file); 
  $neuesBild=imagecreatetruecolor($neueBreite,$neueHoehe); 
  ImageCopyResized($neuesBild,$altesBild,0,0,0,0,$neueBreite,$neueHoehe,$breite,$hoehe); 
  ImagePNG($neuesBild, "img/".$filename.""); 
  } 
  }

	////////////////////////////////////////////////////////////////////////////
  $file =  ''.$rand.'-'.$_FILES['file']['name'].'';  
  $filename = ''.$rand.'-'.$_FILES['file']['name'].'';
  $size=getimagesize($_FILES['file']['tmp_name']); 

if(!in_array("".$type."", $_UPLOAD_CONFIG['filetype'])) { 
    $err[] = "Unerlaubtes Dateiformat!"; 
} 
if($size > $_UPLOAD_CONFIG['max-size']) { 
    $err[] = "Die Datei welche du hochladen willst, ist zu gross!<br>Maximale Dateigrosse beträgt ".$size." kb!"; 
}  

if(empty($err)) { 
	
	if($size[0] > '400')
	{
		createImage($file);	
	}
	else
	{
    copy($_FILES['file']['tmp_name'], $_UPLOAD_CONFIG['target'].'/'.$rand.'-'.$_FILES['file']['name']);
	createThumb($file);
    echo "Die Datei $name wurde erfolgreich hochgeladen!<br />"; 
	
	echo '<a href="'.$_UPLOAD_CONFIG['target'].'/'.$rand.'-'.$_FILES['file']['name'].'"><img src="thumbs/'.$filename.'" /></a>';
} 
}
else { 
    foreach($err as $error) 
    echo "$error<br>";
}

//$file =  $_UPLOAD_CONFIG['target'].'/'.$rand.'-'.$_FILES['file']['name'];  

}
else
{
echo '<form enctype="multipart/form-data" action="upload.php" method="post"> 
<input type="file" name="file"><br> 
<input type="submit" value="hochladen" name="submit"> 
</form>';
}

?>
Es ist jetzt schon ein bisschen unübersichtlich...
Ich bekomme immer
Code:
Die Datei welche du hochladen willst, ist zu gross!
Obwohl sie nicht zu groß ist...
lg
 
Zurück