dlebowski Posted September 5, 2007 Share Posted September 5, 2007 Does anyone know of a way to automatically scale an image and then copy that image to a new directory following an import? My image import works great, but I need it to create a copy that is scaled down and then save it to a different directory. Any help would be appreciated. Thanks as usual for any help you can provide! Ryan Quote Link to comment https://forums.phpfreaks.com/topic/68132-copy-image-to-directory-after-automatically-scaling-it/ Share on other sites More sharing options...
AdRock Posted September 5, 2007 Share Posted September 5, 2007 This is how i upload images and create 2 resized images. 1 image is the full size image i want (still resized) and the other is a thumbnail. I also insert the image names in to a database <?php $idir = "../images/gallery/full/"; // Path To Images Directory $tdir = "../images/gallery/thumbs/"; // Path To Thumbnails Directory $twidth = "100"; // Maximum Width For Thumbnail Images $theight = "75"; // Maximum Height For Thumbnail Images $ldir = "../images/gallery/large/"; // Path To Thumbnails Directory $lwidth = "400"; // Maximum Width For Thumbnail Images $lheight = "300"; // Maximum Height For Thumbnail Images $pic=($_FILES['imagefile']['name']); $gallery = $_POST['gallery']; if (!isset($_POST['gallery'])) { ?> <fieldset> <legend><b>Image Gallery Upload</b></legend> <form enctype="multipart/form-data" action="<? $_SERVER['PHP_SELF']; ?>" method="post"> <p style="margin-left:10px;">Gallery to upload to:<br /> <select name="gallery" size="1"> <option value="jack">Jack</option> <option value="honeylands">Honeylands</option> <option value="events">Events</option> <option value="art">Art Auction</option> </select> <p style="margin-left:10px;">Image to upload:<br /> <input type="file" name="imagefile" style="width:450px" /><br /> <P><input type="submit" name="submit" value="Upload Image" class="submit-button" style="margin-left:10px;" /></p> </form> </fieldset><br /> <?} else { // Uploading/Resizing Script $url = $_FILES['imagefile']['name']; // Set $url To Equal The Filename For Later Use if ($_FILES['imagefile']['type'] == "image/jpg" || $_FILES['imagefile']['type'] == "image/jpeg" || $_FILES['imagefile']['type'] == "image/pjpeg") { $file_ext = strrchr($_FILES['imagefile']['name'], '.'); // Get The File Extention In The Format Of , For Instance, .jpg, .gif or .php $copy = copy($_FILES['imagefile']['tmp_name'], "$idir" . $_FILES['imagefile']['name']); // Move Image From Temporary Location To Permanent Location if ($copy) { // If The Script Was Able To Copy The Image To It's Permanent Location print 'Image uploaded successfully.<br />'; // Was Able To Successfully Upload Image //insert the image names into the database include_once "../includes/connection.php"; $query = "INSERT INTO image VALUES ('','$pic','$pic','$gallery')"; mysql_query($query); mysql_close(); $simg = imagecreatefromjpeg("$idir" . $url); // Make A New Temporary Image To Create The Thumbanil From $currwidth = imagesx($simg); // Current Image Width $currheight = imagesy($simg); // Current Image Height if ($currheight > $currwidth) { // If Height Is Greater Than Width $zoom = $twidth / $currheight; // Length Ratio For Width $newheight = $theight; // Height Is Equal To Max Height $newwidth = $currwidth * $zoom; // Creates The New Width } else { // Otherwise, Assume Width Is Greater Than Height (Will Produce Same Result If Width Is Equal To Height) $zoom = $twidth / $currwidth; // Length Ratio For Height $newwidth = $twidth; // Width Is Equal To Max Width $newheight = $currheight * $zoom; // Creates The New Height } $dimg = imagecreate($newwidth, $newheight); // Make New Image For Thumbnail imagetruecolortopalette($simg, false, 256); // Create New Color Pallete $palsize = ImageColorsTotal($simg); for ($i = 0; $i < $palsize; $i++) { // Counting Colors In The Image $colors = ImageColorsForIndex($simg, $i); // Number Of Colors Used ImageColorAllocate($dimg, $colors['red'], $colors['green'], $colors['blue']); // Tell The Server What Colors This Image Will Use } imagecopyresized($dimg, $simg, 0, 0, 0, 0, $newwidth, $newheight, $currwidth, $currheight); // Copy Resized Image To The New Image (So We Can Save It) imagejpeg($dimg, "$tdir" . $url); // Saving The Image imagedestroy($simg); // Destroying The Temporary Image imagedestroy($dimg); // Destroying The Other Temporary Image print 'Image thumbnail created successfully.'; // Resize successful } else { print '<font color="#FF0000">ERROR: Unable to upload image.</font>'; // Error Message If Upload Failed } $simg = imagecreatefromjpeg("$idir" . $url); // Make A New Temporary Image To Create The Thumbanil From $currwidth = imagesx($simg); // Current Image Width $currheight = imagesy($simg); // Current Image Height if ($currheight > $currwidth) { // If Height Is Greater Than Width $zoom = $lwidth / $currheight; // Length Ratio For Width $newheight = $lheight; // Height Is Equal To Max Height $newwidth = $currwidth * $zoom; // Creates The New Width } else { // Otherwise, Assume Width Is Greater Than Height (Will Produce Same Result If Width Is Equal To Height) $zoom = $lwidth / $currwidth; // Length Ratio For Height $newwidth = $lwidth; // Width Is Equal To Max Width $newheight = $currheight * $zoom; // Creates The New Height } $dimg = imagecreate($newwidth, $newheight); // Make New Image For Thumbnail imagetruecolortopalette($simg, false, 256); // Create New Color Pallete $palsize = ImageColorsTotal($simg); for ($i = 0; $i < $palsize; $i++) { // Counting Colors In The Image $colors = ImageColorsForIndex($simg, $i); // Number Of Colors Used ImageColorAllocate($dimg, $colors['red'], $colors['green'], $colors['blue']); // Tell The Server What Colors This Image Will Use } imagecopyresized($dimg, $simg, 0, 0, 0, 0, $newwidth, $newheight, $currwidth, $currheight); // Copy Resized Image To The New Image (So We Can Save It) imagejpeg($dimg, "$ldir" . $url); // Saving The Image imagedestroy($simg); // Destroying The Temporary Image imagedestroy($dimg); // Destroying The Other Temporary Image print 'Image thumbnail created successfully.'; // Resize successful } else { print '<font color="#FF0000">ERROR: Unable to upload image.</font>'; // Error Message If Upload Failed } } ?> Quote Link to comment https://forums.phpfreaks.com/topic/68132-copy-image-to-directory-after-automatically-scaling-it/#findComment-342487 Share on other sites More sharing options...
dlebowski Posted September 5, 2007 Author Share Posted September 5, 2007 Thanks man. I think this will be perfect. The next question I have for you is how do you go about uploading hundreds of images at once? Do you use a java applet to upload an entire directory? Thanks again! Quote Link to comment https://forums.phpfreaks.com/topic/68132-copy-image-to-directory-after-automatically-scaling-it/#findComment-342499 Share on other sites More sharing options...
Jessica Posted September 5, 2007 Share Posted September 5, 2007 Why don't you use FTP to upload them, and then run a php script to loop through the directory and resize? Quote Link to comment https://forums.phpfreaks.com/topic/68132-copy-image-to-directory-after-automatically-scaling-it/#findComment-342503 Share on other sites More sharing options...
dlebowski Posted September 5, 2007 Author Share Posted September 5, 2007 I need my client to be able to upload them once they log into the site. FTP would be difficult for them to use. Quote Link to comment https://forums.phpfreaks.com/topic/68132-copy-image-to-directory-after-automatically-scaling-it/#findComment-342505 Share on other sites More sharing options...
Jessica Posted September 5, 2007 Share Posted September 5, 2007 Why would it be hard for them to use? I've given clients FTP access to their own folder on my server before. Quote Link to comment https://forums.phpfreaks.com/topic/68132-copy-image-to-directory-after-automatically-scaling-it/#findComment-342507 Share on other sites More sharing options...
dlebowski Posted September 5, 2007 Author Share Posted September 5, 2007 I want them to be able to run it from within the application. Are you suggesting just creating a link from within the application for them to click on and allow them to upload their images into the directory through the app? I have thought about this a little, but have heard their is security issues with doing this. I guess I could force them to enter in their login and password again. Once they click on the link. Is this what you had in mind? Quote Link to comment https://forums.phpfreaks.com/topic/68132-copy-image-to-directory-after-automatically-scaling-it/#findComment-342510 Share on other sites More sharing options...
Jessica Posted September 5, 2007 Share Posted September 5, 2007 No, nevermind. Sorry. Quote Link to comment https://forums.phpfreaks.com/topic/68132-copy-image-to-directory-after-automatically-scaling-it/#findComment-342525 Share on other sites More sharing options...
dlebowski Posted September 5, 2007 Author Share Posted September 5, 2007 Not a problem. Thanks for the suggestion. I have been struggling with this for a week or so now! Quote Link to comment https://forums.phpfreaks.com/topic/68132-copy-image-to-directory-after-automatically-scaling-it/#findComment-342528 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.