Flukey Posted October 13, 2006 Share Posted October 13, 2006 Hi,I've done some code which uploads a picture, resizes it to a ratio value. However, i can't work out how to create the new image name and then move it into a directory.Heres the code:[code=php:0] function open_image ($file) { # JPEG: $im = @imagecreatefromjpeg($file); if ($im !== false) { return $im; } # GIF: $im = @imagecreatefromgif($file); if ($im !== false) { return $im; } # PNG: $im = @imagecreatefrompng($file); if ($im !== false) { return $im; } # GD File: $im = @imagecreatefromgd($file); if ($im !== false) { return $im; } # GD2 File: $im = @imagecreatefromgd2($file); if ($im !== false) { return $im; } # WBMP: $im = @imagecreatefromwbmp($file); if ($im !== false) { return $im; } # XBM: $im = @imagecreatefromxbm($file); if ($im !== false) { return $im; } # XPM: $im = @imagecreatefromxpm($file); if ($im !== false) { return $im; } # Try and load from string: $im = @imagecreatefromstring(file_get_contents($file)); if ($im !== false) { return $im; } return false; } if($_POST['upload_picture']) { // No image? if (empty($_FILES['image']) OR $_FILES['image']['error'] != UPLOAD_ERR_OK) { echo ('<strong>Invalid image uploaded. Please go back and try again.</strong>'); } $imagepath = $_FILES['image']['tmp_name']; $file_type = $_FILES['image']['type']; // Load image $image = open_image($imagepath); if (!$image) { die ('<strong>You uploaded an invalid image. Please go back and try again.</strong>'); } // Get original width and height $width = imagesx($image); $height = imagesy($image); //Calculate new width and height if($width > 200) { $new_width = floatval(200); $new_height = $height * ($new_width/$width); } elseif($height > 200) { $new_height = floatval(200); $new_width = $width * ($new_height/$height); } // Resample $image_resized = imagecreatetruecolor($new_width, $new_height); $image =imagecopyresampled($image_resized, $new_image, 0, 0, 0, 0, $new_width, $new_height, $width, $height); // Create a hash of the title for the picture name $hash_title = md5($int_title); $user_id = $_SESSION['user_id']; $image_title = $hash_title . "_" . $user_id . ".jpg"; $filepath = "e:\XXXX\X\XXXX\user\htdocs\article\images"; $webpath = "http://www.XXXX.com/article/images/"; $image_filepath = $filepath . $image_title; $image_webpath = $webpath . $image_title; ; $imagecreated = true; $next_step = 2; } [/code]Any help would be hugely appreciated, thanks.Jamie Link to comment https://forums.phpfreaks.com/topic/23865-image-resize-and-rename/ Share on other sites More sharing options...
fezzik Posted October 13, 2006 Share Posted October 13, 2006 Jamie,Here is some code that I use for a photogallery site:[code]//--------------- end: config.php --------------------//path where to store images$path_img = "../uploads/";$extlimit = "yes"; //Do you want to limit the extensions of files uploaded (yes/no)//allowed Extensions$limitedext = array(".gif",".jpg",".png",".jpeg",".bmp");//check if folders are Writable or not//please CHOMD them 777if (!is_writeable($path_img)){ die ("Error: The directory <b>($path_img)</b> is NOT writable");}// --------------- end: config.php --------------------if ( $_SERVER['REQUEST_METHOD'] == "POST" ) { // get the post variables foreach( $_POST as $key=>$value ) { if ( $value ) { $$key=htmlentities( trim($value), ENT_QUOTES ); } else { $$key=""; } //end else loop } //end foreach loop $file_type = $_FILES['imgfile']['type']; $file_name = $_FILES['imgfile']['name']; $file_size = $_FILES['imgfile']['size']; $file_tmp = $_FILES['imgfile']['tmp_name']; //check if you have selected a file. if(!is_uploaded_file($file_tmp)){ echo "Error: Please select a file to upload!."; exit(); //exit the script and don't do anything else. } //check file extension $ext = strrchr($file_name,'.'); $ext = strtolower($ext); if (($extlimit == "yes") && (!in_array($ext,$limitedext))) { echo "Wrong file extension."; exit(); } //get the file extension. $getExt = explode ('.', $file_name); $file_ext = $getExt[count($getExt)-1]; //create a random file name $rand_name = md5(time()); $rand_name= rand(0,999999999)."_".rand(0,999999999); //upload the image move_uploaded_file ($file_tmp, "$path_img/$rand_name.$file_ext");} //end POST loop[/code]At a quick glance it looks like you haven't included a way to copy the file to a directory in your script. I think the following lines might help://save the image to a writable directoryimagejpeg($image_resized,"$path_img/$rand_name.$file_ext");Here is the link for more information on imagejpeg: http://us3.php.net/imagejpegLet me know if any of this helps. Cheers,Fezzik Link to comment https://forums.phpfreaks.com/topic/23865-image-resize-and-rename/#findComment-108446 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.