Hej Udviklere!
Jeg har et problem med en Crop funktion hvor jeg skal kunne resize et billede til at gemmes både som original billede og et nyt thumb billede. Det virker fint, men kan ikke gemme dem som f.eks. time() og så thumb eller large. Kan kun gemme dem med et enkelt navn.
- $upload_dir = "../images/portfolie"; // The directory for the images to be saved in
- $upload_path = $upload_dir."/"; // The path to where the image will be saved
- $large_image_name = "large.jpg"; // New name of the large image
- $thumb_image_name = "thumb.jpg"; // New name of the thumbnail image
- $max_file = "1148576"; // Approx 1MB
- $max_width = "500"; // Max width allowed for the large image
- $thumb_width = "100"; // Width of thumbnail image
- $thumb_height = "100"; // Height of thumbnail image
-
- $newLargeName = $large_image_name;
- $newThumbName = $thumb_image_name;
-
- //Image functions
- //You do not need to alter these functions
- function resizeImage($image,$width,$height,$scale) {
- $newImageWidth = ceil($width * $scale);
- $newImageHeight = ceil($height * $scale);
- $newImage = imagecreatetruecolor($newImageWidth,$newImageHeight);
- $source = imagecreatefromjpeg($image);
- imagecopyresampled($newImage,$source,0,0,0,0,$newImageWidth,$newImageHeight,$width,$height);
- imagejpeg($newImage,$image,90);
- chmod($image, 0777);
- return $image;
- }
- //You do not need to alter these functions
- function resizeThumbnailImage($thumb_image_name, $image, $width, $height, $start_width, $start_height, $scale){
- $newImageWidth = ceil($width * $scale);
- $newImageHeight = ceil($height * $scale);
- $newImage = imagecreatetruecolor($newImageWidth,$newImageHeight);
- $source = imagecreatefromjpeg($image);
- imagecopyresampled($newImage,$source,0,0,$start_width,$start_height,$newImageWidth,$newImageHeight,$width,$height);
- imagejpeg($newImage,$thumb_image_name,90);
- chmod($newThumbName, 0777);
- return $newThumbName;
- }
- //You do not need to alter these functions
- function getHeight($image) {
- $sizes = getimagesize($image);
- $height = $sizes[1];
- return $height;
- }
- //You do not need to alter these functions
- function getWidth($image) {
- $sizes = getimagesize($image);
- $width = $sizes[0];
- return $width;
- }
-
- //Image Locations
- $large_image_location = $upload_path.$newLargeName;
- $thumb_image_location = $upload_path.$newThumbName;
-
- //Create the upload directory with the right permissions if it doesn't exist
- if(!is_dir($upload_dir)){
- mkdir($upload_dir, 0777);
- chmod($upload_dir, 0777);
- }
-
- //Check to see if any images with the same names already exist
- if (file_exists($large_image_location)){
- if(file_exists($thumb_image_location)){
- $thumb_photo_exists = "<img src=\"".$thumb_image_location."\" alt=\"Thumbnail Image\"/>";
- }else{
- $thumb_photo_exists = "";
- }
- $large_photo_exists = "<img src=\"".$large_image_location."\" alt=\"Large Image\"/>";
- } else {
- $large_photo_exists = "";
- $thumb_photo_exists = "";
- }
-
- if (isset($_POST["upload"])) {
- //Get the file information
- $userfile_name = $_FILES['image']['name'];
- $userfile_tmp = $_FILES['image']['tmp_name'];
- $userfile_size = $_FILES['image']['size'];
- $filename = basename($_FILES['image']['name']);
- $file_ext = substr($filename, strrpos($filename, '.') + 1);
-
- //Only process if the file is a JPG and below the allowed limit
- if((!empty($_FILES["image"])) && ($_FILES['image']['error'] == 0)) {
- if (($file_ext!="jpg") && ($userfile_size > $max_file)) {
- $error= "ONLY jpeg images under 1MB are accepted for upload";
- }
- }else{
- $error= "Select a jpeg image for upload";
- }
- //Everything is ok, so we can upload the image.
- if (strlen($error)==0){
-
- if (isset($_FILES['image']['name'])){
-
- move_uploaded_file($userfile_tmp, $large_image_location);
- chmod($large_image_location, 0777);
-
- $width = getWidth($large_image_location);
- $height = getHeight($large_image_location);
- //Scale the image if it is greater than the width set above
- if ($width > $max_width){
- $scale = $max_width/$width;
- $uploaded = resizeImage($large_image_location,$width,$height,$scale);
- }else{
- $scale = 1;
- $uploaded = resizeImage($large_image_location,$width,$height,$scale);
- }
- //Delete the thumbnail file so the user can create a new one
- if (file_exists($thumb_image_location)) {
- unlink($thumb_image_location);
- }
- }
- //Refresh the page to show the new uploaded image
- header("location:".$_SERVER["PHP_SELF"]);
- exit();
- }
- }
-
- if (isset($_POST["upload_thumbnail"]) && strlen($large_photo_exists)>0) {
- //Get the new coordinates to crop the image.
- $x1 = $_POST["x1"];
- $y1 = $_POST["y1"];
- $x2 = $_POST["x2"];
- $y2 = $_POST["y2"];
- $w = $_POST["w"];
- $h = $_POST["h"];
- //Scale the image to the thumb_width set above
- $scale = $thumb_width/$w;
- $cropped = resizeThumbnailImage($thumb_image_location, $large_image_location,$w,$h,$x1,$y1,$scale);
- //Reload the page again to view the thumbnail
- header("location:".$_SERVER["PHP_SELF"]);
- exit();
- }
-
- if ($_GET['a']=="delete"){
- if (file_exists($large_image_location)) {
- unlink($large_image_location);
- }
- if (file_exists($thumb_image_location)) {
- unlink($thumb_image_location);
- }
- header("location:".$_SERVER["PHP_SELF"]);
- exit();
- }
I kan se under
$large_image_name og
$thumb_image_name der vil jeg gerne kunne skrive
time() . "thumb"; eller
time() . "large"; men hvis jeg gør det så gemmer den kun det "originale" billede i mappen, og jeg kan ikke resize billedet.
- function preview(img, selection) {
- var scaleX = <?php echo $thumb_width;?> / selection.width;
- var scaleY = <?php echo $thumb_height;?> / selection.height;
-
- $('#thumbnail + div > img').css({
- width: Math.round(scaleX * <?php echo $current_large_image_width;?>) + 'px',
- height: Math.round(scaleY * <?php echo $current_large_image_height;?>) + 'px',
- marginLeft: '-' + Math.round(scaleX * selection.x1) + 'px',
- marginTop: '-' + Math.round(scaleY * selection.y1) + 'px'
- });
- $('#x1').val(selection.x1);
- $('#y1').val(selection.y1);
- $('#x2').val(selection.x2);
- $('#y2').val(selection.y2);
- $('#w').val(selection.width);
- $('#h').val(selection.height);
- }
-
- $(document).ready(function () {
- $('#save_thumb').click(function() {
- var x1 = $('#x1').val();
- var y1 = $('#y1').val();
- var x2 = $('#x2').val();
- var y2 = $('#y2').val();
- var w = $('#w').val();
- var h = $('#h').val();
- if(x1=="" || y1=="" || x2=="" || y2=="" || w=="" || h==""){
- alert("You must make a selection first");
- return false;
- }else{
- return true;
- }
- });
- });
-
- $(window).load(function () {
- $('#thumbnail').imgAreaSelect({ aspectRatio: '1:1', onSelectChange: preview });
- });
Skriv hvis i mangler noget mere.
Med venlig hilsen,
Daniele