Как сделать картинки предпросмотра?

Discussion in 'PHP' started by Ridikh, 26 Jun 2009.

  1. Ridikh

    Ridikh Member

    Joined:
    11 Nov 2007
    Messages:
    69
    Likes Received:
    7
    Reputations:
    0
    Есть скрипт, который выдает страницы с фотками, нужно чтобы на этих страницах показывались уменьшенные по весу и по размеру картинки предпросмотра фоток. подскажите как решить проблему.
     
    #1 Ridikh, 26 Jun 2009
    Last edited: 27 Jun 2009
  2. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    PHP:
    <pre>
    <?php 
    @set_time_limit(0); 
    @
    ini_set("display_errors","1");

    function 
    resize($img$thumb_width$newfilename

      
    $max_width=$thumb_width;

        
    //Check if GD extension is loaded
        
    if (!extension_loaded('gd') && !extension_loaded('gd2')) 
        {
            
    trigger_error("GD is not loaded"E_USER_WARNING);
            return 
    false;
        }

        
    //Get Image size info
        
    list($width_orig$height_orig$image_type) = getimagesize($img);
        
        switch (
    $image_type
        {
            case 
    1$im imagecreatefromgif($img); break;
            case 
    2$im imagecreatefromjpeg($img);  break;
            case 
    3$im imagecreatefrompng($img); break;
            default:  
    trigger_error('Unsupported filetype!'E_USER_WARNING);  break;
        }
        
        
    /*** calculate the aspect ratio ***/
        
    $aspect_ratio = (float) $height_orig $width_orig;

        
    /*** calulate the thumbnail width based on the height ***/
        
    $thumb_height round($thumb_width $aspect_ratio);
        

        while(
    $thumb_height>$max_width)
        {
            
    $thumb_width-=10;
            
    $thumb_height round($thumb_width $aspect_ratio);
        }
        
        
    $newImg imagecreatetruecolor($thumb_width$thumb_height);
        
        
    /* Check if this image is PNG or GIF, then set if Transparent*/  
        
    if(($image_type == 1) OR ($image_type==3))
        {
            
    imagealphablending($newImgfalse);
            
    imagesavealpha($newImg,true);
            
    $transparent imagecolorallocatealpha($newImg255255255127);
            
    imagefilledrectangle($newImg00$thumb_width$thumb_height$transparent);
        }
        
    imagecopyresampled($newImg$im0000$thumb_width$thumb_height$width_orig$height_orig);
        
        
    //Generate the file, and rename it to $newfilename
        
    switch ($image_type
        {
            case 
    1imagegif($newImg,$newfilename); break;
            case 
    2imagejpeg($newImg,$newfilename);  break;
            case 
    3imagepng($newImg,$newfilename); break;
            default:  
    trigger_error('Failed resize image!'E_USER_WARNING);  break;
        }
     
        return 
    $newfilename;
    }

    //Пример вызова

    resize("foto.jpg"50"foto1.jpg");

    echo 
    "New picture - foto1.jpg";

    ?>
    </pre>
     
    #2 Pashkela, 27 Jun 2009
    Last edited: 27 Jun 2009
    1 person likes this.
  3. Ridikh

    Ridikh Member

    Joined:
    11 Nov 2007
    Messages:
    69
    Likes Received:
    7
    Reputations:
    0
    Pashkela, спасибо работает ;)
     
    #3 Ridikh, 27 Jun 2009
    Last edited: 27 Jun 2009