+ Antworten
Ergebnis 1 bis 6 von 6

Thema: Bilder beim Hochladen selber zuschneiden.

  1. #1
    Centipede Avatar von Bli3nez

    Registriert seit
    6.7.04 - 20:07
    Beiträge
    108
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Bilder beim Hochladen selber zuschneiden.

    Hallo meine lieben,
    ich besitze ein Flirt Community Script und dort ist imageupload file , wenn die mitglieder die fotos hochladen, wird das automatisch auf 240x320 zugeschnitten, aber das foto wird nicht verkleinert , es wird geschnitten und zwar nur die linke seite vom foto, also wenn man ein foto hat 640x480 wird einfach auf 240x320 geschnitten und wenn man z.b. auf dem foto in der mitte steht, wird einfach halber körper weggeschnitten.

    kann man das den nicht umarbeiten , das dass foto in der mitte geschitten wird?

    hier ist die _class_imageupload

    PHP-Code:
    <?php
    class imageupload extends fileupload
    {
     var 
    $prefix;
     var 
    $uploadpath;
     var 
    $thumbnailwidth;
     var 
    $thumbnailheight;
     var 
    $allowedextensions;

     var 
    $_FILES;


     function 
    imageupload($prefix$inputfield$uploadpath$thumbnailwidth$thumbnailheight)
     {
      
    $this->prefix $prefix;
      
    $this->uploadpath $uploadpath;
      
    $this->thumbnailwidth $thumbnailwidth;
      
    $this->thumbnailheight $thumbnailheight;
      
    $this->allowedextensions = array("jpg""jpeg""png");

      
    $this->_FILES = &$_FILES[$inputfield];
     }

     function 
    doupload($insert_id$createthumbnail$copywatermark$quality="75"$transition="100")
     {
      
    $extension $this->getextension();
      if(
    preg_match("/jpg|jpeg/"$extension)) $newimage = @imagecreatefromjpeg($this->_FILES['tmp_name']);
      elseif(
    preg_match("/png/"$extension)) $newimage = @imagecreatefrompng($this->_FILES['tmp_name']);

      if(!
    $newimage)
      {
       return 
    FALSE;
      }

      
    $imagewidth imagesx($newimage);
      
    $imageheight imagesy($newimage);

    //--------------------------Erstelt klein bild----------------------------
      
    if($createthumbnail)
      {
       if(
    function_exists("imagecreatetruecolor")) $thumbnail imagecreatetruecolor($this->thumbnailwidth$this->thumbnailheight);
       else 
    $thumbnail imagecreate($this->thumbnailwidth$this->thumbnailheight);

       if(
    $imagewidth $imageheight)
       {
        
    $thumbnailwidth $this->thumbnailwidth;
        
    $thumbnailheight round(($this->thumbnailwidth $imagewidth) * $imageheight);

        if(
    $thumbnailheight $this->thumbnailheight)
        {
         
    $thumbnailwidth round(($this->thumbnailheight $thumbnailheight) * $thumbnailwidth);
         
    $thumbnailheight $this->thumbnailheight;
        }
       }
       else
       {
        
    $thumbnailwidth round(($this->thumbnailheight $imageheight) * $imagewidth);
        
    $thumbnailheight $this->thumbnailheight;

        if(
    $thumbnailwidth $this->thumbnailwidth)
        {
         
    $thumbnailheight round(($this->thumbnailwidth $thumbnailwidth) * $thumbnailheight);
         
    $thumbnailwidth $this->thumbnailwidth;
        }
       }

       if(
    function_exists("imagecopyresampled")) imagecopyresampled($thumbnail$newimage0000$thumbnailwidth$thumbnailheight$imagewidth$imageheight);
       else 
    imagecopyresized($thumbnail$newimage0000$thumbnailwidth$thumbnailheight$imagewidth$imageheight);
                                                                                   
    $extension "jpg"// überschreibt die datei ändung der erstelten datei in jpg
       
    $thumbnailsavepath "./".$this->uploadpath."/".$this->prefix.$insert_id.".".$extension;  // Dateiname + ändung $extension
       
    if(preg_match("/jpg|jpeg/"$extension)) $check = @imagejpeg($thumbnail$thumbnailsavepath$quality);
       elseif(
    preg_match("/png/"$extension)) $check = @imagepng($thumbnail$thumbnailsavepath$quality);
       
    imagedestroy($thumbnail);

          
    $newimage = @imagecreatefromjpeg($this->uploadpath."/".$this->prefix.".jpg");
          
    $imagewidth imagesx($newimage);
      
    $imageheight imagesy($newimage);
       if(!
    $check)
       {
        
    imagedestroy($newimage);
        return 
    FALSE;
       }
      }
    //-------------------------Wasserzeichen---------------------------------------------
      
    if($copywatermark)
      {
       
    $watermark imagecreatefrompng("images/watermark.png");

       
    $watermarkwidth imagesx($watermark);
       
    $watermarkheight imagesy($watermark);

       
    $transparent imagecolorat($watermark11);
       
    imagecolortransparent($watermark$transparent);

       
    imagecopymerge($newimage$watermark$imagewidth $watermarkwidth 3$imageheight $watermarkheight 300$watermarkwidth$watermarkheight$transition);
       
    imagedestroy($watermark);
      }

      
    $imagesavepath "./".$this->uploadpath."/".$this->prefix.$insert_id.".".$extension;
      if(
    preg_match("/jpg|jpeg/"$extension)) $check = @imagejpeg($newimage$imagesavepath100);
      elseif(
    preg_match("/png/"$extension)) $check = @imagepng($newimage$imagesavepath100);
      
    imagedestroy($newimage);

      if(!
    $check)
      {
       
    unlink($thumbnailsavepath);
       return 
    FALSE;
      }

      return 
    TRUE;
     }
    }
    ?>
    Im Musik Forum kannst du hunderte TV und Radiosender Live hören.

  2. #2
    Säule der Foren Avatar von blaustern
    Tetris Champion! Simon Champion!
    Registriert seit
    21.1.08 - 18:52
    Beiträge
    6.590
    Thanks
    87
    Thanked 232 Times in 197 Posts

    AW: Bilder beim Hochladen selber zuschneiden.

    Vielleicht eine blöde Idee, aber schneide doch die Bilder mit einem Bildprogramm schon vor dem Hochladen zu, dann ersparst Du dir den nachträglichen Zuschnitt.

  3. #3
    Centipede Avatar von Bli3nez

    Registriert seit
    6.7.04 - 20:07
    Beiträge
    108
    Thanks
    0
    Thanked 0 Times in 0 Posts

    AW: Bilder beim Hochladen selber zuschneiden.

    hehe, naja nicht jeder user kommt auf die idee, aber wenn da 400 user auf der seite sind und die laden alle die fotos hoch , ist es schon ab und zu mal ärgerlich das auf dem foto hinterher nur halbes gesicht zu sehen ist. aber danke dir für den vorschlag hehe

    also währe nicht schlecht wenn man selber entscheiden könnte wie das foto geschnitten wird oder zumindestens z.b. von 640x480 auf 320x240 oder oder sowas.
    Im Musik Forum kannst du hunderte TV und Radiosender Live hören.

  4. #4
    Aufsteiger/in Avatar von terra-power

    Registriert seit
    14.4.04 - 15:44
    Beiträge
    435
    Thanks
    0
    Thanked 6 Times in 6 Posts

    AW: Bilder beim Hochladen selber zuschneiden.

    Hallo.

    Leider (wie in der Ankündigung geschrieben), kann ich keine komplette Lösung geben. Stichwort aber, PHP GD. Das ist die Grafikbibliothek für PHP.

    Referenz: http://de.php.net/manual/de/ref.image.php
    Anwendungsbesiepiel Bild verkleinern: http://blog.t-error.ch/article/427/b...x_verkleinern/

    Viel Erfolg!

    Marc
    stop:

    NOP
    JMP stop

  5. #5
    Centipede Avatar von Bli3nez

    Registriert seit
    6.7.04 - 20:07
    Beiträge
    108
    Thanks
    0
    Thanked 0 Times in 0 Posts

    AW: Bilder beim Hochladen selber zuschneiden.

    Aber könntest du mir nicht verraten wie man im diesen text etwas ändert damit das bild nicht geschnitten wird sondern einfach vom z.b. 640x480 einfach verkleinert also das bild bleibt wird aber einfach nur verkleinert auf 320x240 also 240 breite und 320 höhe .

    oder das es nicht vom linke seite raus geschnitten wird, sondern aus der mitte:

    PHP-Code:
      if($createthumbnail)
      {
       if(
    function_exists("imagecreatetruecolor")) $thumbnail imagecreatetruecolor($this->thumbnailwidth$this->thumbnailheight);
       else 
    $thumbnail imagecreate($this->thumbnailwidth$this->thumbnailheight);
       if(
    $imagewidth $imageheight)
       {
        
    $thumbnailwidth $this->thumbnailwidth;
        
    $thumbnailheight round(($this->thumbnailwidth $imagewidth) * $imageheight);
        if(
    $thumbnailheight $this->thumbnailheight)
        {
         
    $thumbnailwidth round(($this->thumbnailheight $thumbnailheight) * $thumbnailwidth);
         
    $thumbnailheight $this->thumbnailheight;
        }
       }
       else
       {
        
    $thumbnailwidth round(($this->thumbnailheight $imageheight) * $imagewidth);
        
    $thumbnailheight $this->thumbnailheight;
        if(
    $thumbnailwidth $this->thumbnailwidth)
        {
         
    $thumbnailheight round(($this->thumbnailwidth $thumbnailwidth) * $thumbnailheight);
         
    $thumbnailwidth $this->thumbnailwidth;
        }
       }
       if(
    function_exists("imagecopyresampled")) imagecopyresampled($thumbnail$newimage0000$thumbnailwidth$thumbnailheight$imagewidth$imageheight);
       else 
    imagecopyresized($thumbnail$newimage0000$thumbnailwidth$thumbnailheight$imagewidth$imageheight);
                                                                                   
    $extension "jpg"// überschreibt die datei ändung der erstelten datei in jpg
       
    $thumbnailsavepath "./".$this->uploadpath."/".$this->prefix.$insert_id.".".$extension;  // Dateiname + ändung $extension
       
    if(preg_match("/jpg|jpeg/"$extension)) $check = @imagejpeg($thumbnail$thumbnailsavepath$quality);
       elseif(
    preg_match("/png/"$extension)) $check = @imagepng($thumbnail$thumbnailsavepath$quality);
       
    imagedestroy($thumbnail);
          
    $newimage = @imagecreatefromjpeg($this->uploadpath."/".$this->prefix.".jpg");
          
    $imagewidth imagesx($newimage);
      
    $imageheight imagesy($newimage);
       if(!
    $check)
       {
        
    imagedestroy($newimage);
        return 
    FALSE;
       }
      } 
    Im Musik Forum kannst du hunderte TV und Radiosender Live hören.

  6. #6
    Aufsteiger/in Avatar von terra-power

    Registriert seit
    14.4.04 - 15:44
    Beiträge
    435
    Thanks
    0
    Thanked 6 Times in 6 Posts

    AW: Bilder beim Hochladen selber zuschneiden.

    Verraten kann ich dirs:

    if(function_exists("imagecopyresampled")) imagecopyresampled($thumbnail, $newimage, 0, 0, 0, 0, $thumbnailwidth, $thumbnailheight, $imagewidth, $imageheight);
    else imagecopyresized($thumbnail, $newimage, 0, 0, 0, 0, $thumbnailwidth, $thumbnailheight, $imagewidth, $imageheight);

    Da musste die entsprechenden GD funktionen einfügen. Hab jedoch kein PHP Intepreter und auch nicht deine "Community" um die entsprechenden Befehle zu testen. Bin ja kein Compiler, müsste das was ich code schon debuggen und das fällt ja nun mal weg. Also zu deutsch: ich kann ja schlecht was programmieren, was ich weder im Modul noch Integrationstest probieren kann.

    Trotzdem schönen Abend.
    stop:

    NOP
    JMP stop

+ Antworten

Berechtigungen

  • Neue Themen erstellen: Ja
  • Themen beantworten: Ja
  • Anhänge hochladen: Ja
  • Beiträge bearbeiten: Ja
  •