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 相关文章推荐
鼠标经过的文本框textbox变色
May 21 Javascript
jQuery autocomplate 自扩展插件、自动完成示例代码
Mar 28 Javascript
JS读取cookies信息(记录用户名)
Jan 10 Javascript
JavaScript获取图片的原始尺寸以宽度为例
May 04 Javascript
JavaScript中使用arguments获得函数传参个数实例
Aug 27 Javascript
原生JS取代一些JQuery方法的简单实现
Sep 20 Javascript
微信小程序 图片宽高自适应详解
May 11 Javascript
vue2.0 路由不显示router-view的解决方法
Mar 06 Javascript
vue.js使用watch监听路由变化的方法
Jul 08 Javascript
vue监听键盘事件的快捷方法【推荐】
Jul 11 Javascript
vue slots 组件的组合/分发实例
Sep 06 Javascript
浅谈js闭包理解
Mar 28 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数组相加操作及与array_merge的区别浅析
2016/11/26 PHP
php如何实现数据库的备份和恢复
2020/11/30 PHP
用jscript实现新建和保存一个word文档
2007/06/15 Javascript
细说浏览器特性检测(2)-通用事件检测
2010/11/05 Javascript
js的[defer]和[async]属性
2014/11/24 Javascript
JavaScript里实用的原生API汇总
2015/05/14 Javascript
jquery实现点击其他区域时隐藏下拉div和遮罩层的方法
2015/12/23 Javascript
jQuery插件EasyUI实现Layout框架页面中弹出窗体到最顶层效果(穿越iframe)
2016/08/05 Javascript
原生JS版和jquery版实现checkbox的全选/全不选/点选/行内点选(Mr.Think)
2016/10/29 Javascript
微信小程序 获取相册照片实例详解
2016/11/16 Javascript
textarea 在浏览器中固定大小和禁止拖动的实现方法
2016/12/03 Javascript
ionic2 tabs使用 Modal底部tab弹出框
2016/12/30 Javascript
angular 基于ng-messages的表单验证实例
2017/05/04 Javascript
angularjs $http实现form表单提交示例
2017/06/09 Javascript
关于vue状态过渡transition不起作用的原因解决
2019/04/09 Javascript
纯 JS 实现放大缩小拖拽功能(完整代码)
2019/11/25 Javascript
Python中集合类型(set)学习小结
2015/01/28 Python
python 计算数组中每个数字出现多少次--“Bucket”桶的思想
2017/12/19 Python
python 处理string到hex脚本的方法
2018/10/26 Python
通过python的matplotlib包将Tensorflow数据进行可视化的方法
2019/01/09 Python
pytorch dataloader 取batch_size时候出现bug的解决方式
2020/02/20 Python
Python同时迭代多个序列的方法
2020/07/28 Python
python如何调用百度识图api
2020/09/29 Python
沪江旗下的海量优质课程平台:沪江网校
2017/11/07 全球购物
GAP阿联酋官网:GAP UAE
2017/11/30 全球购物
荷兰美妆护肤品海淘网站:Beautinow(中文)
2020/11/22 全球购物
Android interview questions
2016/12/25 面试题
大一自我鉴定范文
2013/10/04 职场文书
新入职员工的自我介绍演讲稿
2014/01/02 职场文书
大学生职业生涯规划书范文
2014/01/04 职场文书
交通事故检查书范文
2014/01/30 职场文书
体育教师自我鉴定
2014/02/12 职场文书
大学生就业自我推荐信
2014/05/10 职场文书
科技活动周标语
2014/10/08 职场文书
团日活动总结格式
2015/05/11 职场文书
python绘图subplots函数使用模板的示例代码
2021/04/30 Python