SitePoint Sponsor

User Tag List

Results 1 to 5 of 5
  1. #1
    SitePoint Addict scoobasteve1982's Avatar
    Join Date
    Apr 2007
    Posts
    333
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Image resize script

    Hi there,

    I'm looking to resize an image dynamically with PHP. I've looked at ImageMagik however I don't want to install this on every server I work on. I'm looking for a different way. Do you know of one? I'm hoping to create a thumb using PHP's available image functions however I"m not very well practiced at using them. Also is the quality of the photo ruined? Any code would be greatly appreciated or tips. Thanks!

  2. #2
    Worship the Krome kromey's Avatar
    Join Date
    Sep 2006
    Location
    Fairbanks, AK
    Posts
    1,621
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    The manual entry for imagecopyresampled has a simple code example of resizing an image. I use this method for all my resizing needs and do not have any problems with image quality.
    PHP questions? RTFM
    MySQL questions? RTFM

  3. #3
    SitePoint Addict scoobasteve1982's Avatar
    Join Date
    Apr 2007
    Posts
    333
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Kromey I appreciate your post, however this makes the image smaller, works great in fact, however it makes the image SIZE larger. Any suggestions?

  4. #4
    SitePoint Evangelist
    Join Date
    Jun 2004
    Posts
    417
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    I use this code, works fine:

    PHP Code:
        //define a maxim size for the uploaded images
            
    define ("MAX_SIZE","1000");
        
        
    // define the width and height for the thumbnail
            
    define ("WIDTH","100");
            
    define ("HEIGHT","74");

        
    // this is the function that will create the thumbnail image from the uploaded image
        // the resize will be done considering the width and height defined, but without deforming the image
        
    function make_thumb($img_name,$filename,$new_w,$new_h)    {
            
    //get image extension.
                
    $ext=getExtension($img_name);
            
    //creates the new image using the appropriate function from gd library
                
    if(!strcmp("jpg",$ext) || !strcmp("jpeg",$ext))
                    
    $src_img=imagecreatefromjpeg($img_name);

                    if(!
    strcmp("png",$ext))
                    
    $src_img=imagecreatefrompng($img_name);

            
    //gets the dimmensions of the image
                
    $old_x=imageSX($src_img);
                
    $old_y=imageSY($src_img);

            
    // next we will calculate the new dimmensions for the thumbnail image
            // the next steps will be taken:
            // 1. calculate the ratio by dividing the old dimmensions with the new ones
            // 2. if the ratio for the width is higher, the width will remain the one define in WIDTH variable
            // and the height will be calculated so the image ratio will not change
            // 3. otherwise we will use the height ratio for the image
            // as a result, only one of the dimmensions will be from the fixed ones
                
    $ratio1=$old_x/$new_w;
                
    $ratio2=$old_y/$new_h;
                if(
    $ratio1>$ratio2) {
                
    $thumb_w=$new_w;
                
    $thumb_h=$old_y/$ratio1;
            }
            else {
            
    $thumb_h=$new_h;
            
    $thumb_w=$old_x/$ratio2;
            }
            
            
    // we create a new image with the new dimmensions
                
    $dst_img=ImageCreateTrueColor($thumb_w,$thumb_h);

            
    // resize the big image to the new created one
                
    imagecopyresampled($dst_img,$src_img,0,0,0,0,$thumb_w,$thumb_h,$old_x,$old_y);

            
    // output the created image to the file. Now we will have the thumbnail into the file named by $filename
                
    if(!strcmp("png",$ext))
                
    imagepng($dst_img,$filename);
                else
                
    imagejpeg($dst_img,$filename);
            
            
    //destroys source and destination images.
                
    imagedestroy($dst_img);
                
    imagedestroy($src_img);
            }

            
    // This function reads the extension of the file.
            // It is used to determine if the file is an image by checking the extension.
                
    function getExtension($str) {
                
    $i strrpos($str,".");
                if (!
    $i) { return ""; }
                
    $l strlen($str) - $i;
                
    $ext substr($str,$i+1,$l);
                return 
    $ext;
                }

            
    // This variable is used as a flag. The value is initialized with 0 (meaning no error found)
            //and it will be changed to 1 if an errro occures. If the error occures the file will not be uploaded.
                
    $errors=0;
            
            
    // checks if the form has been submitted
            
    if(isset($_POST['submit'])) {
                
    //reads the name of the file the user submitted for uploading
                
    $picture=$_FILES['picture']['name'];
                
                
    // if it is not empty
                
                //FOTO 1
                
    if ($picture) {
                    
    // get the original name of the file from the clients machine
                    
    $filename stripslashes($_FILES['picture']['name']);
            
                    
    // get the extension of the file in a lower case format
                        
    $extension getExtension($filename);
                        
    $extension strtolower($extension);
                    
    // if it is not a known extension, we will suppose it is an error, print an error message
                    // and will not upload the file, otherwise we continue
                        
    if (($extension != "jpg") && ($extension != "jpeg") && ($extension != "png")) {
                            echo 
    '<h1>Format of the picture is not allowed</h1>';
                            
    $errors=1;
                        }
                        else {
                            
    // get the size of the image in bytes
                            // $_FILES[\'image\'][\'tmp_name\'] is the temporary filename of the file in which the uploaded file was stored on the server
                            
    $size=getimagesize($_FILES['picture']['tmp_name']);
                            
    $sizekb=filesize($_FILES['picture']['tmp_name']);
            
                            
    //compare the size with the maxim size we defined and print error if bigger
                            
    if ($sizekb1 MAX_SIZE*1024) {echo '<h1>Picture is too big</h1>';    $errors=1;}
            
                            
    //we will give an unique name, for example the time in unix time format
                            
    srand((double) microtime()*1000000);
                            
    $random_number =  rand();
                            
    $image_name $band_id '_' $random_number '.' $extension;
                        
                            
    //the new name will be containing the full path where will be stored (images folder)
                        
                            
    $newname ="images/".$image_name;
                            
    $copied copy($_FILES['picture']['tmp_name'], $newname);
            
                            
    //we verify if the image has been uploaded, and print error instead
                            
    if (!$copied) {echo '<h1>Copy failed!</h1>'$errors=1;}
                            else {
                                
    // the new thumbnail image will be placed in images/thumbs/ folder
                                
    $thumb_name ='images/thumbs/'.$image_name;
                        
                                
    // call the function that will create the thumbnail. The function will get as parameters
                                // the image name, the thumbnail name and the width and height desired for the thumbnail
                                
    $thumb make_thumb($newname,$thumb_name,WIDTH,HEIGHT);
                            } 
    // else verify upload
                        
    }// else check extension
                
    //Check ifi file empty
                
            
    //Check Submit 
    Hope that helps,
    M

  5. #5
    SitePoint Member
    Join Date
    Apr 2007
    Posts
    4
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    if you need a script, i wrote a function. you just call it with parameters and it will resize a picture to desired thumbnail size. if thats bigger than current pic, it wont do anything. IM me...
    Convert long www links to short - Short WWW.com


Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •