php结合imgareaselect实现图片裁剪


Posted in Javascript onJuly 05, 2015

引用CSS

/js/jquery.imgareaselect-0.9.10/css/imgareaselect-default.css

引用js

/js/jquery.imgareaselect-0.9.10/scripts/jquery.imgareaselect.min.js 
/js/AjaxFileUploaderV2.1/ajaxfileupload.js

html

<div>
  <img src='blank.jpg' id="mainimg">
</div>
<div id="myPreview" >
  <img src="blank.jpg" id="mainimgthumb" />
</div>
  <form name="fmCrop">
    <input type="hidden" name="src_path" value="" />
    <input type="hidden" name="x1" value="" />
    <input type="hidden" name="x2" value="" />
    <input type="hidden" name="y1" value="" />
    <input type="hidden" name="y2" value="" />
    <input type="submit" name="btnSubmit" class="baseinf_but1" style="display:none" value="确定" />
  </form>

jQuery代码

$("#mainimg_src", content).load(function () {
    crop($("#mainimg", content));
   });

   function crop($img) { //$img是
             //缩小比例
             var scalex =$img.width() / $("#mainimg_src").width();
             var scaley =$img.height() / $("#mainimg_src").height();

             $img.imgAreaSelect({
               x1:0,y1:0,x2:150,y2:150,
               handles: true, aspectRatio: '1:1',
               onSelectEnd: function (img, selection) {
                 var scaleX = 100 / (selection.width || 1);
                 var scaleY = 100 / (selection.height || 1);

                 $('#mainimgthumb').css({
                   width: Math.round(scaleX * 400) + 'px',
                   height: Math.round(scaleY * 300) + 'px',
                   marginLeft: '-' + Math.round(scaleX * selection.x1) + 'px',
                   marginTop: '-' + Math.round(scaleY * selection.y1) + 'px'
                 });
                 $('input[name="x1"]', content).val(selection.x1/scalex);
                 $('input[name="y1"]', content).val(selection.y1/scaley);
                 $('input[name="x2"]', content).val(selection.x2/scalex);
                 $('input[name="y2"]', content).val(selection.y2/scaley);
               }
             });
           }

确定裁剪

//确定剪切
$("form[name=fmCrop]", content).submit(function () {
  var data = $("form[name=fmCrop]", content).serializeArray();
  $.get('/members/web-members-rest/crop.html', data, function (r) {
    switch (r.result) {
       case "Success":
         jAlert("操作成功");
         $("#left_mainimg").attr("src", "/" + r.path + '?a=' + (new Date()).format('yyyyMMddhhmmss'));
         $("#myPreview", content).css("display", "block");
         $("#myPreview", content).prev().css("display", "none");
         $("#mainimg", content).imgAreaSelect({ hide: true });
         $("form[name=fmUpload]", content).css("display", "none");
         $("input[name=btnSubmit]", content).css("display", "none");
         break;
        }
  });
  return false;
});

服务器端php代码

public function actionCrop($src_path,$x1,$x2,$y1,$y2){
    $pic =$src_path;

    $width = $x2-$x1;
    $height = $y2-$y1;

    $type=exif_imagetype($pic); //判断文件类型
    $support_type=array(IMAGETYPE_JPEG , IMAGETYPE_PNG , IMAGETYPE_GIF);
    if(!in_array($type, $support_type,true)) {
      echo "this type of image does not support! only support jpg , gif or png";
      exit();
    }
    switch($type) {
      case IMAGETYPE_JPEG :
        $image = imagecreatefromjpeg($pic);
        break;
      case IMAGETYPE_PNG :
        $image = imagecreatefrompng($pic);
        break;
      case IMAGETYPE_GIF :
        $image = imagecreatefromgif($pic);
        break;
      default:
        echo "Load image error!";
        exit();
    }

    $copy = $this->PIPHP_ImageCrop($image, $x1, $y1, $width, $height);//裁剪

    imagejpeg($copy, $src_path); //替换新图
    return ['result'=>'Success','path'=>$src_path]; //返回新图地址
  }
  function PIPHP_ImageCrop($image, $x, $y, $w, $h){
    $tw = imagesx($image); 
    $th = imagesy($image); 

    if ($x > $tw || $y > $th || $w > $tw || $h > $th) return FALSE; 

    $temp = imagecreatetruecolor($w, $h); 
    imagecopyresampled($temp, $image, 0, 0, $x, $y, $w, $h, $w, $h); 
    return $temp; 
  }

以上所述就是本文的全部内容了,希望大家能够喜欢。

Javascript 相关文章推荐
jQuery基础知识filter()和find()实例说明
Jul 06 Javascript
浅说js变量
May 25 Javascript
基于jquery实现的文字淡入淡出效果
Nov 14 Javascript
jQuery判断元素是否存在的可靠方法
May 06 Javascript
用js模拟struts2的多action调用示例
May 19 Javascript
JavaScript实现当网页加载完成后执行指定函数的方法
Mar 21 Javascript
简介AngularJS中使用factory和service的方法
Jun 17 Javascript
jQuery的position()方法详解
Jul 19 Javascript
利用D3.js实现最简单的柱状图示例代码
Dec 09 Javascript
web 屏蔽BackSpace键实例代码
Dec 24 Javascript
Vue.js实现一个SPA登录页面的过程【推荐】
Apr 29 Javascript
详解create-react-app 自定义 eslint 配置
Jun 07 Javascript
kindeditor编辑器点中图片滚动条往上顶的bug
Jul 05 #Javascript
jQuery插件pagewalkthrough实现引导页效果
Jul 05 #Javascript
IE浏览器下PNG相关功能
Jul 05 #Javascript
jQuery的Scrollify插件实现滑动到页面下一节点
Jul 05 #Javascript
javascript实现控制的多级下拉菜单
Jul 05 #Javascript
javascript遇到html5的一些表单属性
Jul 05 #Javascript
浅谈angularJS 作用域
Jul 05 #Javascript
You might like
二招解决php乱码问题
2012/03/25 PHP
php记录搜索引擎爬行记录的实现代码
2018/03/02 PHP
JS代码优化技巧之通俗版(减少js体积)
2011/12/23 Javascript
js判断选择的时间是否大于今天的代码
2013/08/20 Javascript
嵌入式iframe子页面与父页面js通信的方法
2015/01/20 Javascript
js操作css属性实现div层展开关闭效果的方法
2015/05/11 Javascript
node.js require() 源码解读
2015/12/13 Javascript
Angular.JS去掉访问路径URL中的#号详解
2017/03/30 Javascript
在 Node.js 中使用 async 函数的方法
2017/11/17 Javascript
微信小程序实现的贪吃蛇游戏【附源码下载】
2018/01/03 Javascript
vue cli3.0结合echarts3.0与地图的使用方法示例
2019/03/26 Javascript
Bootstrap实现省市区三级联动(亲测可用)
2019/07/26 Javascript
详解json串反转义(消除反斜杠)
2019/08/12 Javascript
Auto.JS实现抖音刷宝等刷视频app,自动点赞,自动滑屏,自动切换视频功能
2020/05/08 Javascript
[01:10]为家乡而战!完美世界城市挑战赛全国总决赛花絮
2019/07/25 DOTA
python logging 日志轮转文件不删除问题的解决方法
2016/08/02 Python
关于Django外键赋值问题详解
2017/08/13 Python
scrapy处理python爬虫调度详解
2020/11/23 Python
简单介绍HTML5中audio标签的使用
2015/09/24 HTML / CSS
西雅图电动自行车公司:Rad Power Bikes
2020/02/02 全球购物
军训自我鉴定
2013/12/14 职场文书
医院实习介绍信
2014/01/12 职场文书
奥巴马就职演讲稿
2014/05/15 职场文书
小学生保护环境倡议书
2014/05/15 职场文书
我的梦想演讲稿1000字
2014/08/21 职场文书
2014乡镇党委副书记对照检查材料思想汇报
2014/10/09 职场文书
个人作风建设心得体会
2014/10/22 职场文书
2014年科室工作总结
2014/11/20 职场文书
2014年实验室工作总结
2014/12/03 职场文书
2015个人简历自我评价语
2015/03/11 职场文书
2015年司法所工作总结
2015/04/27 职场文书
被告答辩状范文
2015/05/22 职场文书
预备党员群众意见
2015/06/01 职场文书
初中家长意见
2015/06/03 职场文书
MySQL限制查询和数据排序介绍
2022/03/25 MySQL
Python实现科学占卜 让视频自动打码
2022/04/09 Python