Jump to content

Archived

This topic is now archived and is closed to further replies.

freddykhalid

Create and save Thumbnails

Recommended Posts

Hey guys, is there an easy way to copy and convert all the images within a directory to thumbnails and save them?

Scenario:

Images Directory: 1.jpg , 2.jpg

I want to have thumbnails with lower quality as well in the same directory and eventually:

Images Directory: 1.jpg , _thb_1.jpg , 2.jpg , _thb_2.jpg


where _thb_*.jpg are the thumbnails.

Please help.

Share this post


Link to post
Share on other sites
Look at the [a href=\"http://www.php.net/glob\" target=\"_blank\"]glob()[/a] function and the [a href=\"http://www.php.net/image\" target=\"_blank\"]image[/a] functions. Using the examples in the manual should give you some ideas and let you code it yourself.

If, once you have a script, you have problems, post here again with the problems and include the script that you wrote. Then we will help you solve your problems.

Ken

Share this post


Link to post
Share on other sites
I was able to successfully do what I intended to do using the following function for JPEG, PNG, GIF But I wasn't able to do so for BMP and TIF. The code is the following:
[code]
<?


function thumb($filename, $destination, $th_width, $th_height, $forcefill)
{  
   list($width, $height) = getimagesize($filename);

   if (!($source = @imagecreatefromjpeg($filename))) {
    if (!($source = @imagecreatefrompng($filename))) {
        if (!($source = @imagecreatefromgif($filename))) {    
            if (!($source = @imagecreatefromwbmp($filename))) {
                $source = @imagecreate($filename); } } } }
   if($width > $th_width || $height > $th_height){
     $a = $th_width/$th_height;
     $b = $width/$height;

     if(($a > $b)^$forcefill)
     {
         $src_rect_width  = $a * $height;
         $src_rect_height = $height;
         if(!$forcefill)
         {
           $src_rect_width = $width;
           $th_width = $th_height/$height*$width;
         }
     }
     else
     {
         $src_rect_height = $width/$a;
         $src_rect_width  = $width;
         if(!$forcefill)
         {
           $src_rect_height = $height;
           $th_height = $th_width/$width*$height;
         }
     }

     $src_rect_xoffset = ($width - $src_rect_width)/2*intval($forcefill);
     $src_rect_yoffset = ($height - $src_rect_height)/2*intval($forcefill);

     $thumb  = imagecreatetruecolor($th_width, $th_height);
     imagecopyresized($thumb, $source, 0, 0, $src_rect_xoffset, $src_rect_yoffset, $th_width, $th_height, $src_rect_width, $src_rect_height);

     imagejpeg($thumb,$destination);
   }
}
?>[/code]




An error occurs in the line when I try to apply the function for bmp or tif. The function then outputs a black picture.

imagecopyresized($thumb, $source, 0, 0, $src_rect_xoffset, $src_rect_yoffset, $th_width, $th_height, $src_rect_width, $src_rect_height);



Warning: imagecopyresized(): supplied argument is not a valid Image resource in c:\wamp\www\Test\Admin\Uploads\upload.php on line 185

Share this post


Link to post
Share on other sites
hi
the error would be occuring as you have no check in the event that the picture is NEITHER format. add an extra trap to cater for the event that the picture is not of any valid format.
cheers
Mark

[b]edit:[/b]also, this bit wont work anyway as far as i know:

[code]
@imagecreate($filename);
[/code]as 'imagecreate' requires a width/height, not a filename.

Share this post


Link to post
Share on other sites
Hi again....
I'm trying to use phpThumbs downloaded from: [a href=\"http://phpthumb.sourceforge.net/\" target=\"_blank\"]http://phpthumb.sourceforge.net/[/a]

Still no result but still didn't lose hope !!!

Anyone has an answer for this?


[code] <?


function thumb($filename, $destination, $th_width, $th_height, $forcefill)
{  
   list($width, $height) = getimagesize($filename);

   if (!($source = @imagecreatefromjpeg($filename))) {
    if (!($source = @imagecreatefrompng($filename))) {
        if (!($source = @imagecreatefromgif($filename))) {    
            if (!include_once('phpthumbs.bmp.php')) {
oops("You do not appear to have phpthumbs.bmp.php installed in the same path as upload.php. Please add this file, or don't try to upload .bmp files into your image directory!"); }
    

$phpThumbBMP = new phpthumb_bmp();



$source = @imagecreatefromgd2($phpThumbBMP->phpthumb_bmpfile2gd($filename));
            


}
         }      
                   }
  
   if($width > $th_width || $height > $th_height){
     $a = $th_width/$th_height;
     $b = $width/$height;

     if(($a > $b)^$forcefill)
     {
         $src_rect_width  = $a * $height;
         $src_rect_height = $height;
         if(!$forcefill)
         {
           $src_rect_width = $width;
           $th_width = $th_height/$height*$width;
         }
     }
     else
     {
         $src_rect_height = $width/$a;
         $src_rect_width  = $width;
         if(!$forcefill)
         {
           $src_rect_height = $height;
           $th_height = $th_width/$width*$height;
         }
     }

     $src_rect_xoffset = ($width - $src_rect_width)/2*intval($forcefill);
     $src_rect_yoffset = ($height - $src_rect_height)/2*intval($forcefill);

     $thumb  = imagecreatetruecolor($th_width, $th_height);
     imagecopyresized($thumb, $source, 0, 0, $src_rect_xoffset, $src_rect_yoffset, $th_width, $th_height, $src_rect_width, $src_rect_height);

     imagejpeg($thumb,$destination);
   }
}
?>[/code]

Share this post


Link to post
Share on other sites
I managed to get the BMP working, That should be enough.

But 1 more thing, when I try this for a TIF picture this error comes up:

Warning: imagecopyresized(): supplied argument is not a valid Image resource in c:\wamp\www\Test\Admin\Uploads\upload.php on line 178

Does anyone know how to solve this problem for TIF?

Share this post


Link to post
Share on other sites

×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.