Bilder in 2 Ordner in unterschiedlichen größen hochladen

thehasso

Erfahrenes Mitglied
Hallo zusammen,

ich habe ein Skript das Bilder in ein Ordner hochlädt. Nun hab ich das soweit modifiziert das die Bilder auch in einen zweiten Ordner kopiert werden und dabei groß skaliert werden. Ich denke alles richtig gemacht zu haben, jedoch werden die Fotos nicht in den Ordner fotos_gross hochgeladen.

Hab die ganze Nacht daran gearbeitet, ich hoffe mir kann jemand dabei helfen.

PHP:
if (isset($file))
{

//(Übergabe(Post),Zielverzeihnis,Name der Datei, Breite, Höche,BildQuallität,Wasserzeichen ja/nein,Wasserzeichen-Transparent)
if(picupload("file","fotos",$zufall."_".$datumzeit,240,320,100,1,100)){
	mysql_query("INSERT INTO foto (user_id, name,status, datum) VALUES ('$user_id','".$zufall."_".$datumzeit.".jpg','0', '$datum')");


$dst_image = imagecreatetruecolor(240,320);
$src_image = imagecreatefromjpeg('/fotos/'.$zufall."_".$datumzeit.'.jpg');
imagecopyresized ($dst_image, $src_image, 0, 0, 100, 120, 100, 100, 400, 400);

$source = 'fotos/'.$zufall."_".$datumzeit.'.jpg';
$destination = 'fotos_gross/'.$zufall."_".$datumzeit.'.jpg';
include( "optimize_dimension.php" );
optimize_dimension($source,740, 840,$destination);
	
	}
else echo "Wurde nicht hochgeladen";

}

?>



Die Funktion optimize_dimension:

PHP:
<?php 

/*

   -------------------------------------------------------------------
             
         ##          ### 
          ###       ##### 
            ###      ###      scripted by:
             ###     ### 
              ###    ###  #### ###     ## ######
               ###   ##   #     ###     #    ####
               #### ###     #### ###    ##    ### 
               #### ##    ###    ###   ###    ## 
               ####       ###  #  ##   ###    ##
               ###         #####  ###  ###    ##
               #

   -------------------------------------------------------------------

   Danke an Wolfgang Arnberger (http://www.php-center.de/beitraege/detail.php?a_id=34)
   für's Beispielscript.
   
   Die Funktion skalliert ein bestehendes Bild ( JPEG, PNG, GIF ) auf die angegebenen 
   Maximalgrößen ohne die Proportionen zu verlieren. Das alte Bild wird überschrieben.
   
 */

function optimize_dimension( $path, $mWidth, $mHeight, $path2 = null  )
   {
      // übprüfen ob die angegebene datei exisitiert
      if( !file_exists( $path ) ) { return false; }
      
      // bildinformation holen
      try { $size = getimagesize( $path ); }
      catch (Exception $e) { return false; }
      $width      = $size[0];
      $height     = $size[1];
      
      // banal wegen try, aber sicher ist sicher
      if( $width < 1 || $height < 1 ) { return false; }
      
      // prüfen ob bild jpeg, png, oder gif ist
      if( $size[2] < 1 || $size[2] > 3 ) { return false; }
      
      // bildgrößer überprüfen, zu kleine bilder werden nicht verarbeitet
      if( ( $width - $mWidth < 0 ) && ( $height - $mHeight < 0 ) ) { return false; }
      
      // resize faktor bestimmen
      $resize_factor_h = $mHeight / $height;
      $resize_factor_w = $mWidth / $width; 
      if( $resize_factor_h > $resize_factor_w ) { $resize_factor = $resize_factor_w; } else { $resize_factor = $resize_factor_h; }
      
      $nWidth  = intval( $width * $resize_factor ); 
      $nHeight = intval( $height * $resize_factor ); 

      //$n_image = ImageCreate( $nWidth, $nHeight );
      $n_image = imagecreatetruecolor( $nWidth, $nHeight );
      
      // buffer erstellen
      switch( $size[2] )
         {
            case 1: // GIF
               $c_image = ImageCreateFromGIF( $path );
               break;
               
            case 2: // JPG
               $c_image=ImageCreateFromJPEG( $path );
               break;
               
            case 3: // PNG
               $c_image=ImageCreateFromPNG( $path );
               break;
               
            default:
               return false;
         }
         
      // skalieren
      //ImageCopyResized( $n_image, $c_image, 0, 0, 0, 0, $nWidth, $nHeight, $width, $height ); 
      ImageCopyResampled( $n_image, $c_image, 0, 0, 0, 0, $nWidth, $nHeight, $width, $height ); 
      
      // speicherort festlegen
      if( $path2 != null ) { $path = $path2; }

      // vom buffer zur richtigen datei
      switch( $size[2] )
         {
            case 1: // GIF
               ImageGIF( $n_image, $path, 100 ); 
               break;
               
            case 2: // JPG
               ImageJPEG( $n_image, $path, 100 );
               break;
               
            case 3: // PNG
               ImagePNG( $n_image, $path, 100 ); 
               break;
               
            default:
               return false;
         }

      return true;
   }
?>
 
gibts eine Fehlermeldung?
Und wird das Foto in den Ordner fotos geladen?

Was osll der folgende Block? Da erstellst du ein image und speicherst es nirgens
PHP:
$dst_image = imagecreatetruecolor(240,320);
$src_image = imagecreatefromjpeg('/fotos/'.$zufall."_".$datumzeit.'.jpg');
imagecopyresized ($dst_image, $src_image, 0, 0, 100, 120, 100, 100, 400, 400);
Da fehlt ein
PHP:
imagejpeg($src_image, 'meinNeuerPfad/meinFoto.jpg');
 
ja das Foto wird in den Ordner Fotos geladen. Es gibt keine Fehlermeldung.

und was du mir gesagt hast, habe ich befolgt. Ging leider auch nicht. Es wird kein Foto in den Ordner Fotos_gross geladen.
PHP:
if (isset($file))
{

//(Übergabe(Post),Zielverzeihnis,Name der Datei, Breite, Höche,BildQuallität,Wasserzeichen ja/nein,Wasserzeichen-Transparent)
if(picupload("file","fotos",$zufall."_".$datumzeit,240,320,100,1,100)){
	mysql_query("INSERT INTO foto (user_id, name,status, datum) VALUES ('$user_id','".$zufall."_".$datumzeit.".jpg','0', '$datum')");


$dst_image = imagecreatetruecolor(240,320);
$src_image = imagecreatefromjpeg('/fotos/'.$zufall."_".$datumzeit.'.jpg');
imagecopyresized ($dst_image, $src_image, 0, 0, 100, 120, 100, 100, 400, 400);

$source = 'fotos/'.$zufall."_".$datumzeit.'.jpg';
$destination = 'fotos_gross/'.$zufall."_".$datumzeit.'.jpg';

imagejpeg($src_image, $destination);


include( "optimize_dimension.php" );
optimize_dimension($source,740, 840,$destination);




	}
else echo "Wurde nicht hochgeladen";

}

?>
 
Zuerst solltes du dich mal entscheiden ob die die Funktion optimize_dimension verwenden willst oder es selner anpassen und speicherst. Momentan hast du beides drin.

Und schmeiss mal ein error_reporting(E_ALL); rein um alle Fehlermeldungen auszugeben
 
Zurück