用户
 找回密码
 入住 CI 中国社区
搜索
查看: 2421|回复: 2
收起左侧

[讨论/交流] 图片裁切---怎么用?

[复制链接]
发表于 2011-11-11 02:21:51 | 显示全部楼层 |阅读模式
本帖最后由 123 于 2011-11-11 02:28 编辑
PHP复制代码
<?php
 
 
 
$op=empty($_GET['op'])?'':$_GET['op'];
//echo $op;
 
 
session_start(); //Do not remove this
//SESSION开启,设置存储变量 文件名结尾  和 文件后缀名
/*if (strlen($_SESSION['random_key'])==0){
 $_SESSION['random_key'] = "s"; //assign the timestamp to the session variable
 $_SESSION['user_file_ext']= "";
 }
 */

 
#########################################################################################################
# CONSTANTS                                                                                                                                                                                             #
# You can alter the options below                                                                                                                                               #
#########################################################################################################
$upload_dir = "upload_pic";                             // The directory for the images to be saved in
$upload_path = $upload_dir."/";                         // The path to where the image will be saved
$upload_path_large=$upload_path."template/";
$large_image_prefix = "template";                       // The prefix name to large image 临时大图
$thumb_image_prefix = "portrait";                       // The prefix name to the thumb image小图
@$large_image_name = $large_image_prefix.$_SESSION['random_key'];     // New name of the large image (append the timestamp to the filename)
@$thumb_image_name = $thumb_image_prefix.$_SESSION['random_key'];     // New name of the thumbnail image (append the timestamp to the filename)
$max_file = "3";                                                        // Maximum file size in MB
$max_width = "300";                                                     // Max width allowed for the large image
$thumb_width = "75";                                            // Width of thumbnail image
$thumb_height = "75";                                           // Height of thumbnail image
// Only one of these image types should be allowed for upload
$allowed_image_types = array('image/pjpeg'=>"jpg",'image/jpeg'=>"jpg",'image/jpg'=>"jpg",'image/png'=>"png",'image/x-png'=>"png",'image/gif'=>"gif");
$allowed_image_ext = array_unique($allowed_image_types); // do not change this
foreach ($allowed_image_ext as $mime_type => $ext) {
        @$image_ext.= strtoupper($ext)." ";
}
 
 
##########################################################################################################
# IMAGE FUNCTIONS                                                                                                                                                                                #
# You do not need to alter these functions                                                                                                                               #
##########################################################################################################
function resizeImage($image,$width,$height,$scale) {
        list($imagewidth, $imageheight, $imageType) = getimagesize($image);
        $imageType = image_type_to_mime_type($imageType);
        $newImageWidth = ceil($width * $scale);
        $newImageHeight = ceil($height * $scale);
        $newImage = imagecreatetruecolor($newImageWidth,$newImageHeight);
        switch($imageType) {
                case "image/gif":
                        $source=imagecreatefromgif($image);
                        break;
                case "image/pjpeg":
                case "image/jpeg":
                case "image/jpg":
                        $source=imagecreatefromjpeg($image);
                        break;
                case "image/png":
                case "image/x-png":
                        $source=imagecreatefrompng($image);
                        break;
        }
        imagecopyresampled($newImage,$source,0,0,0,0,$newImageWidth,$newImageHeight,$width,$height);
 
        switch($imageType) {
                case "image/gif":
                        imagegif($newImage,$image);
                        break;
                case "image/pjpeg":
                case "image/jpeg":
                case "image/jpg":
                        imagejpeg($newImage,$image,90);
                        break;
                case "image/png":
                case "image/x-png":
                        imagepng($newImage,$image);
                        break;
        }
 
        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){
        list($imagewidth, $imageheight, $imageType) = getimagesize($image);
        $imageType = image_type_to_mime_type($imageType);
 
        $newImageWidth = ceil($width * $scale);
        $newImageHeight = ceil($height * $scale);
        $newImage = imagecreatetruecolor($newImageWidth,$newImageHeight);
        switch($imageType) {
                case "image/gif":
                        $source=imagecreatefromgif($image);
                        break;
                case "image/pjpeg":
                case "image/jpeg":
                case "image/jpg":
                        $source=imagecreatefromjpeg($image);
                        break;
                case "image/png":
                case "image/x-png":
                        $source=imagecreatefrompng($image);
                        break;
        }
        imagecopyresampled($newImage,$source,0,0,$start_width,$start_height,$newImageWidth,$newImageHeight,$width,$height);
        switch($imageType) {
                case "image/gif":
                        imagegif($newImage,$thumb_image_name);
                        break;
                case "image/pjpeg":
                case "image/jpeg":
                case "image/jpg":
                        imagejpeg($newImage,$thumb_image_name,90);
                        break;
                case "image/png":
                case "image/x-png":
                        imagepng($newImage,$thumb_image_name);
                        break;
        }
        chmod($thumb_image_name, 0777);
        return $thumb_image_name;
}
//You do not need to alter these functions
function getHeight($image) {
        $size = getimagesize($image);
        $height = $size[1];
        return $height;
}
//You do not need to alter these functions
function getWidth($image) {
        $size = getimagesize($image);
        $width = $size[0];
        return $width;
}
 
//remove file
function deldir($dir) {
        $dh=opendir($dir);
        while ($file=readdir($dh)) {
                if($file!="." && $file!="..") {
                        $fullpath=$dir."/".$file;
                        if(!is_dir($fullpath)) {
                                unlink($fullpath);
                        } else {
                                deldir($fullpath);
                        }
                }
        }
 
        closedir($dh);
 
        if(rmdir($dir)) {
                return true;
        } else {
                return false;
        }
}
//Image Locations
 
@$large_image_location = $upload_path_large.$large_image_name.$_SESSION['user_file_ext'];
@$thumb_image_location = $upload_path.$thumb_image_name.$_SESSION['user_file_ext'];
 
 
 
//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);
}
 
if(!is_dir($upload_path_large)){
        mkdir($upload_path_large, 0777);
        chmod($upload_path_large, 0777);
}
//Check to see if any images with the same name already exist
if (file_exists($large_image_location)){
        if(file_exists($thumb_image_location)){
                $thumb_photo_exists = "<img src=\"".$upload_path.$thumb_image_name.$_SESSION['user_file_ext']."\" alt=\"Thumbnail Image\"/>";
        }else{
                $thumb_photo_exists = "";
        }
        $large_photo_exists = "<img src=\"".$upload_path_large.$large_image_name.$_SESSION['user_file_ext']."\" 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'];
        $userfile_type = $_FILES['image']['type'];
        $filename = basename($_FILES['image']['name']);
        $file_ext = strtolower(substr($filename, strrpos($filename, '.') + 1));
 
        //Only process if the file is a JPG, PNG or GIF and below the allowed limit
        if((!empty($_FILES["image"])) && ($_FILES['image']['error'] == 0)) {
 
                foreach ($allowed_image_types as $mime_type => $ext) {
                        //loop through the specified image types and if they match the extension then break out
                        //everything is ok so go and check file size
                        if($file_ext==$ext && $userfile_type==$mime_type){
                                $error = "";
                                break;
                        }else{
                                $error = "Only <strong>".$image_ext."</strong> images accepted for upload<br />";
                        }
                }
                //check if the file size is above the allowed limit
                if ($userfile_size > ($max_file*1048576)) {
                        $error.= "Images must be under ".$max_file."MB in size";
                }
 
        }else{
                $error= "Select an image for upload";
        }
        //Everything is ok, so we can upload the image.
        if (strlen($error)==0){
 
                if (isset($_FILES['image']['name'])){
 
                        //this file could now has an unknown file extension (we hope it's one of the ones set above!)
                        $large_image_location = $large_image_location.".".$file_ext;
                        $thumb_image_location = $thumb_image_location.".".$file_ext;
 
                        //put the file ext in the session so we know what file to look for once its uploaded
 
                        $_SESSION['user_file_ext']=".".$file_ext;
 
 
                        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);
                                }*/

                }
 
        }
}
 
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);
        //@unlink($large_image_location);
        //@unlink($large_image_location.$_SESSION['user_file_ext']);
        deldir($upload_path_large);
        //header("location:".$_SERVER["HP_SELF"]);
 
 
 
 
 
}
 
 
if (@$_GET['a']=="delete" && strlen($_GET['t'])>0){
        //get the file locations
        $large_image_location = $upload_path_large.$large_image_prefix.$_GET['t'];
        $thumb_image_location = $upload_path.$thumb_image_prefix.$_GET['t'];
        if (file_exists($large_image_location)) {
                unlink($large_image_location);
        }
        if (file_exists($thumb_image_location)) {
                unlink($thumb_image_location);
        }
        //header("location:".$_SERVER["HP_SELF"]);
        //exit();
}
 
 
 
 
 
 
 
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<head>
 
 
</head>
<body>
 
 
 
 
<?php if(empty($op)){
        if(!empty($_SESSION['user_file_ext'])){
                $_SESSION['user_file_ext']= "";
        }
        ?>
 
<form name="photo" enctype="multipart/form-data"
        action="?op=upload&t=<?php echo time();?>" method="post">hoto <input
        type="file" name="image" size="30" /> <input type="submit"
        name="upload" value="上传" /></form>
        <?php }?>
 
        <?php if($op=='upload'){?>
<script type="text/javascript" src="jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="jquery.imgareaselect-0.6.2.js"></script>
<script type="text/javascript">
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 getWidth($large_image_location);?>) + 'px',
                height: Math.round(scaleY * <?php echo getHeight($large_image_location);?>) + '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;
                }
        });
        $('<div><img src="<?php echo $upload_path_large.$large_image_name.$_SESSION['user_file_ext'];?>?t=<?php echo time();?>" style="position: relative;" /></div>')
    .css({
      float: 'left',
      position: 'relative',
      overflow: 'hidden',
      width: '<?php echo $thumb_width;?>px',
      height: '<?php echo $thumb_height;?>px'
    })
    .insertAfter($('#thumbnail'));
       
        $('#thumbnail').imgAreaSelect({x1:0, y1: 0, x2: <?php echo $thumb_width;?>, y2: <?php echo $thumb_height;?>,selectionOpacity: 0.2 ,aspectRatio: '1:<?php echo $thumb_height/$thumb_width;?>',onSelectChange: preview,persistent:true });
        $('#x1').val(0);
        $('#y1').val(0);
        $('#x2').val(<?php echo $thumb_width;?>);
        $('#y2').val(<?php echo $thumb_height;?>);
        $('#w').val(<?php echo $thumb_width;?>);
        $('#h').val(<?php echo $thumb_height;?>);
        //
});
 
</script>
<div class="container">
<p><img id="thumbnail"
        src="<?php echo $upload_path_large.$large_image_name.$_SESSION['user_file_ext'];?>?t=<?php echo time();?>"
        title="thumbnail" style="float: left; margin-right: 10px;" /></p>
</div>
<form name="thumbnail" action="?op=thumbnail&t=<?php echo time();?>"
        method="post"><input type="hidden" name="x1" value="" id="x1" /> <input
        type="hidden" name="y1" value="" id="y1" /> <input type="hidden"
        name="x2" value="" id="x2" /> <input type="hidden" name="y2" value=""
        id="y2" /> <input type="hidden" name="w" value="" id="w" /> <input
        type="hidden" name="h" value="" id="h" /> <input type="submit"
        name="upload_thumbnail" value="确定" id="save_thumb" /></form>
 
<hr />
 
        <?php }?>
 
        <?php if($op=='thumbnail'){?>
 
<img src="<?php echo $thumb_image_location;?>" alt="" />
<a href="index.php">继续</a>
        <?php }?>
<!-- Copyright (c) 2008 http://www.webmotionuk.com -->
</body>
</html>
 
 
复制代码

 楼主| 发表于 2011-11-11 02:29:06 | 显示全部楼层
在PHP中可直接用  而在CI中   不会用了!求高手指点。{:soso_e183:}
发表于 2011-11-11 08:23:03 | 显示全部楼层

本版积分规则