Christopher: Bilder trimmen

Hallo,

das Uploaden eines Bildes soll in meinem Script eine zusätzliche Kopie erstellen, die später als Vorschau für das eigentliche Bild dienen soll. Diese Vorschau soll verständlicherweise kleiner dargestellt werden. Kann PHP die Ausmaße eines Bildes trimmen? Ansonsten müsste ich darauf ausweichen, bloß in HTML eine verringerte Breite/Höhe im IMG-Element anzugeben. Dabei leidet aber leider bekanntlich die Qualität.

Danke!

  1. Hi,

    Ja.

    Schöne Grüße
    Julian

    --
    ie:% fl:| br:^ va:| ls:< fo:| rl:( n4:° ss:) de:> js:| ch:{ sh:( mo:? zu:)
  2. Moin Christopher,

    Kann PHP die Ausmaße eines Bildes trimmen? Ansonsten müsste ich

    ich habe Dir unten einen Code Schnipsel angehängt, welchen Du zurecht basteln kannst. Hier am Beispiel von JPEG. Bei Unklarheiten folgst Du bitte dem Link von Julian.

    darauf ausweichen, bloß in HTML eine verringerte Breite/Höhe im IMG-Element anzugeben. Dabei leidet aber leider bekanntlich die Qualität.

    Wie kommst Du den darauf? Das stimmt so nicht ganz. Der von Dir angesprochene Qualitätsverlust, welcher u.U. durch das Rendern des Browsers zustande kommt, ist vernachlässigbar. Der Nachteil ist, das das ganze (große) Bild geladen werden muss.

      
    $target_thumb = sprintf("./photos/small_%s_%02d_%08d.jpg",$Year_Selected,$Month_Selected,$pic_num);  
      
    $max_width_thumb = 150;  
    $max_height_thumb = 100;  
      
    if ( $size[0] > $max_width_thumb && $check == 'w' )  
    {  
    $src_img = imagecreatefromjpeg($file);  
    $picsize = getimagesize($file);  
    $src_width = $picsize[0];  
    $src_height = $picsize[1];  
      
    if ( $src_width > $max_width_thumb )  
    {  
    $convert = $max_width_thumb/$src_width;  
    $dest_width = $max_width_thumb;  
    $dest_height = ceil($src_height*$convert);  
      
    if ( $dest_height > $max_height_thumb )  
    {  
    $convert=$max_height/$dest_height;  
    $dest_height = $max_height_thumb;  
    $dest_width = ceil($dest_width*$convert);  
    }  
      
    }  
    else  
    {  
    $dest_width = $src_width;  
    $dest_height = $src_height;  
    }  
      
    $dst_img = imagecreatetruecolor($dest_width,$dest_height);  
    imagecopyresampled($dst_img, $src_img, 0, 0, 0, 0, $dest_width, $dest_height, $src_width, $src_height);  
    imagejpeg($dst_img, "$target_thumb", $quality);  
    ImageDestroy($dst_img);  
      
    }  
      
    if ( $size[1] > $max_height_thumb && $check == 'h' )  
    {  
    $src_img = imagecreatefromjpeg($file);  
    $picsize = getimagesize($file);  
    $src_width = $picsize[0];  
    $src_height = $picsize[1];  
      
    if ( $src_height > $max_height_thumb )  
    {  
    $convert = $max_height_thumb/$src_height;  
    $dest_height = $max_height_thumb;  
    $dest_width = ceil($src_width*$convert);  
    }  
    else  
    {  
    $dest_width = $src_width;  
    $dest_height = $src_height;  
    }  
      
    $dst_img = imagecreatetruecolor($dest_width,$dest_height);  
    imagecopyresampled($dst_img, $src_img, 0, 0, 0, 0, $dest_width, $dest_height, $src_width, $src_height);  
    imagejpeg($dst_img, "$target_thumb", $quality);  
    ImageDestroy($dst_img);  
      
    }  
    
    

    regds
    Mike©

    --
    Freunde kommen und gehen. Feinde sammeln sich an.