Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 302
  • Last Modified:

resize local image files using a script

Does anyone know of a way to loop through a directory of images on a windows file system and resize some images?  I would like to automate this and not have to resize each image using Gimp or something like that.  Unfortunately, I can't use a file upload plugin/php to resize images since my max file upload is 8mb and that can't be changed as my hosting site wont increase it.  
0
cgray1223
Asked:
cgray1223
  • 2
2 Solutions
 
SnarflesCommented:
Got the perfect script for you.

Well the purpose of this one is for creating thumbs... but you can alter it slightly if you want.

If you want to override the originals then just change $_thpath = "images/thumb/"; to the same as the original path.

Use these lines to determine the sizes

define("THUMB_MAX_WIDTH", 400);
define("THUMB_MAX_HEIGHT", 400);

also this is setup for png... but you can do gif or jpg as well by just changing a couple of things.

if (strtolower($fileext) == 'png')
<?php
/***************************************************************************
* Version 1.0.1.0
* Changes from Version 1.0.0.1
       -  Fixed some other notice problems
       -  Added Fresh thumbnail option slow excution but good when gallary photos change
          over short time - delete old files in thumb directory
       -  Added my name under the gallery -- it can be removed easly
* Changes from version 1
*      - Fixed Notice of php v5.2.7
*  This is a photo gallary that works with JPG
*  Only for Now It is very simple you may use it as stand alone
*  or embed it inside another php using include or HTML (inline)
*  just change the config section and you are ready ....
*  Note:
*      It is nessessary to make the dir name that holds your photos 
*      reletive to running scripts caller
*      Both dir names must ends with "/" it may start with "." or ".."
*      If the galley dir not exists Php error will be produced I have done 
*      nothing to stop it just for you to Know that there is somthing wrong 
*      on your configration.    
*  Feel free to redistribute change modify or improve... it is apsoulutly free
*  of all means no charges no copyrights... nothing just use it if it suits you
*  And send me email to show me where you are using it..If you wish!!!! not compalsary!!!!
*  Part of this Gallary is "Light box" the copyrights and every thing concern it  you will find on
*  JS Dir
*  Last modified on 06/12/2008  
*  Adil Haimoura .... adil@tamidors.com
*******************************************************************************/
// if you are using this file as embed or included move the head part to your page
// for light box to work


?>
<?php

// config section
$title = "";
$_Nocoloumns = 2;
$_Borders = 0;
$_Bcolors = "#ffcc44";
$_path = "images/";
$_thpath = "images/thumb/";
$count = 1;
$_headerfontcolor = "#339966";
$_tableBgcolor = "#1a1a1a";
$_freshthumb = "off";
// end configration

// Define a path - We are assuming that this will be a relative path working
//  both in the filesystem, and through the web for links:
$path = $_path;
$thpath = $_thpath;
// Open the directory
$do = dir($path);
// now check if the thumb dir is available if not, create it!!
if (!is_dir($thpath))
{
				mkdir($_thpath);
}
if ($_freshthumb=="on") // delete old thumbnails and start over the thumbs
{
	$do2=dir($thpath);
	while (($file2=$do2->read())!== false )
{
	if (is_dir($thpath . $file2))
				{
								continue; //this is directory skip it to next
				}else{
					// found old thumb delete the file
					unlink($thpath.$file2);				
				}
				
}
}

// intialize the table
echo ("<table border=$_Borders align=\"center\" >\n<tr>\n");
//echo ("<table border=$_Borders align=\"center\" bordercolor=$_Bcolors bgcolor=$_tableBgcolor>\n<tr>\n");
?>
<td colspan=<?php

echo $_Nocoloumns;

?> align="center"><h1><font color=<?php

echo $_headerfontcolor;

?> >
    <?php
//Not needed
//echo $title;
?>
    </font></h1></td>
</tr>
<tr>
  <?php

$xt = 1;
// Loop through the dir, looking for any/all JPG files:
while (($file = $do->read()) !== false)
{
			$approved = 0;
			//make sure the banner has been approved
			for ( $counter = 0; $counter <= count($approved_banners); $counter++) {
				
				if ($approved_banners[$counter].".png" == $file){
					$approved = 1;
					$filename = $approved_banners[$counter];
				}
				
			
			}
			if ($approved == 1){
				// Parse this for the extension
				//check if there is a directory inside our directory this will create a notice in php 5.2.7 when                     // proccessing the file list ... just skip all directorys
				if (is_dir($path . $file))
				{
								continue; //this is directory skip it to next
				}
				else
				{
								$info = pathinfo($path . $file);

								$fileext = $info['extension'];
								// Continue only if this is a Jpeg
								//if (strtolower($fileext) == 'jpg')
								if (strtolower($fileext) == 'png')
								{
												// We found one!  Start a CELL to display & link to this:
												if ($count == $_Nocoloumns + 1)
												{
																$count = 1;
																echo "<tr>\n";
																
												}
												
												echo "<td align=center ><a href=\"{$path}{$file}\" rel=\"lightbox[myalbum]\">\n";
												//echo "<td align=center width=200 height=90 ><a href=\"{$path}{$file}\" rel=\"lightbox[myalbum]\">\n";
												echo "<td align=center ><a href=\"#\">\n";
												
												if (!is_file($thpath . $file))
												{
												// CREATE THE THUMBER NAIL TO VIEW AND SAVE FOR FUTRE USE
																thumbup($_path, $file, $_thpath);
																$sf = $_thpath . $file;
														//echo "<img src=\"$sf\" align=\"center\" ><br> $file</a><br>";
														echo "<img src=\"$sf\" align=\"center\" > </a><br>";
														
														echo "</td>\n";
														
														$count++;
														if ($count == $_Nocoloumns + 1)
																{
																		echo "</tr>\n";
																		

																}
												}
												else
												{
														$sf = $_thpath . $file;
														// Allready exist thumbnail no need to recreate just display
														//echo "<img src=\"$sf\" align=center ><br> $file</a><br>";
														echo "<img src=\"$sf\" align=center ></a><br>";
														//NAME IS ADDED HERE
																echo "</td>\n";
																
																$count++;
																if ($count == $_Nocoloumns + 1)
																{
																     echo "</tr>\n";
																	 

																}

												}
								}
				}
			}

}

?>
  </table>

<?php

// if you are using this file as embed or included move the java script part below to end your page
// for light box to work


?>
<!--<script type="text/javascript">
			initLightbox();
		</script>-->
<?php

function thumbup($dirn, $file, $thumpdir)
{
	// define the thumbernail dimention
								if (!defined('THUMB_MAX_WIDTH'))
								{
								//define("THUMB_MAX_WIDTH", 80);
								define("THUMB_MAX_WIDTH", 400);
								 }
								 	if (!defined('THUMB_MAX_HEIGHT'))
								{
								//define("THUMB_MAX_HEIGHT", 80);
								define("THUMB_MAX_HEIGHT", 400);
								}
								/*
								if (!defined('THUMB_MAX_WIDTH'))
								{
								define("THUMB_MAX_WIDTH", 160);
								 }
								 	if (!defined('THUMB_MAX_HEIGHT'))
								{
								define("THUMB_MAX_HEIGHT", 160);
								}*/
							
				$filename = $dirn . $file;
				$thfilename = $thumpdir . $file;
				// get the filename and the thumbernail directory
				if (is_file($filename))
				{
								// create the thumbernail from the original picture
								//$im = ImageCreateFromJPEG($filename);
								$im = ImageCreateFrompng($filename);
								$width = ImageSx($im); // Original picture width is stored
								$height = ImageSy($im); // Original picture height is stored
								
							
								if (($width < THUMB_MAX_WIDTH) and ($height < THUMB_MAX_HEIGHT))
								{
									$n_height = $height;
									$n_width = $width;
								}
								else
								{
									// saveing the aspect ratio
									$aspect_x = $width / THUMB_MAX_WIDTH;
									$aspect_y = $height / THUMB_MAX_HEIGHT;
									if ($aspect_x > $aspect_y)
									{
									$n_width = THUMB_MAX_WIDTH;
									$n_height = $height / $aspect_x;
									}
									else
									{
									$n_height = THUMB_MAX_HEIGHT;
									$n_width = $width / $aspect_y;
									}
								}

								$newimage = imagecreatetruecolor($n_width, $n_height);
								// resizing the picture
								imageCopyResized($newimage, $im, 0, 0, 0, 0, $n_width, $n_height, $width, $height);

								// writing to file the thumbnail
								Imagejpeg($newimage, $thfilename, 100);

								imagedestroy($newimage);
								imagedestroy($im);

				}
}

Open in new window

0
 
cgray1223Author Commented:
I'm new to php, so sorry if this is a bit of a dumb question, but I would have to setup php locally on my windows machine and I couldn't leverage the version on my remote host, right?  
0
 
SnarflesCommented:
Yep thats what you would need to do, its a bit outside the scope of this question though. But what you'll probably want is to checkout the lamp install.
0

Featured Post

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now