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 相关文章推荐
效率高的Javscript字符串替换函数的benchmark
Aug 02 Javascript
jquery动画3.创建一个带遮罩效果的图片走廊
Aug 24 Javascript
5款JavaScript代码压缩工具推荐
Jul 07 Javascript
PHP PDO操作总结
Nov 17 Javascript
jQuery实现伸展与合拢panel的方法
Apr 30 Javascript
js实现a标签超链接提交form表单的方法
Jun 24 Javascript
浅析BootStrap中Modal(模态框)使用心得
Dec 24 Javascript
BootStrap 图片样式、辅助类样式和CSS组件的实例详解
Jan 20 Javascript
原生JS实现导航下拉菜单效果
Nov 25 Javascript
详解AngularJS2 Http服务
Jun 26 Javascript
laydate 显示结束时间不小于开始时间的实例
Aug 11 Javascript
基于Express框架使用POST传递Form数据
Aug 10 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
解析yii数据库的增删查改
2013/06/20 PHP
php判断页面是否是微信打开的示例(微信打开网页)
2014/04/25 PHP
使用Entrust扩展包在laravel 中实现RBAC的功能
2020/03/16 PHP
JS操作Cookies包括(读取添加与删除)
2012/12/26 Javascript
IE8的JavaScript点击事件(onclick)不兼容的解决方法
2013/11/22 Javascript
jQuery如何获取同一个类标签的所有值(默认无法获取)
2014/09/25 Javascript
js实现浏览器窗口大小被改变时触发事件的方法
2015/02/02 Javascript
解决JavaScript数字精度丢失问题的方法
2015/12/03 Javascript
JavaScript对象数组排序函数及六个用法
2015/12/23 Javascript
全面了解js中的script标签
2016/07/04 Javascript
jQuery EasyUI学习教程之datagrid点击列表头排序
2016/07/09 Javascript
微信小程序  生命周期详解
2016/10/27 Javascript
jQuery基于正则表达式的表单验证功能示例
2017/01/21 Javascript
使用uni-app开发微信小程序的实现
2019/12/13 Javascript
ES6中Promise的使用方法实例总结
2020/02/18 Javascript
javascript实现移动端触屏拖拽功能
2020/07/29 Javascript
python定时检查启动某个exe程序适合检测exe是否挂了
2013/01/21 Python
Python创建系统目录的方法
2015/03/11 Python
python的dataframe和matrix的互换方法
2018/04/11 Python
Python DataFrame设置/更改列表字段/元素类型的方法
2018/06/09 Python
Python3实现对列表按元组指定列进行排序的方法分析
2018/12/22 Python
PyQt5 在label显示的图片中绘制矩形的方法
2019/06/17 Python
Python 3 实现定义跨模块的全局变量和使用教程
2019/07/07 Python
解决windows上安装tensorflow时报错,“DLL load failed: 找不到指定的模块”的问题
2020/05/20 Python
深入浅析pycharm中 Make available to all projects的含义
2020/09/15 Python
Python爬虫破解登陆哔哩哔哩的方法
2020/11/17 Python
详解Python 中的 defaultdict 数据类型
2021/02/22 Python
美国波道夫·古德曼百货官网:Bergdorf Goodman
2017/11/07 全球购物
英国健身超市:Fitness Superstore
2019/06/17 全球购物
HOTEL INFO英国:搜索全球酒店
2019/08/08 全球购物
linux面试题参考答案(1)
2016/01/22 面试题
副总经理岗位职责
2014/03/16 职场文书
狼牙山五壮士观后感
2015/06/09 职场文书
门球健将观后感
2015/06/16 职场文书
2016年12月份红领巾广播稿
2015/12/21 职场文书
CSS三大特性继承性、层叠性和优先级详解
2022/01/18 HTML / CSS