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 相关文章推荐
js可突破windows弹退效果代码
Aug 09 Javascript
jQuery中ready事件用法实例
Jan 19 Javascript
javascript实现获取浏览器版本、操作系统类型
Jan 29 Javascript
JavaScript返回当前会话cookie全部键值对照的方法
Apr 03 Javascript
jQuery Form插件使用详解_动力节点Java学院整理
Jul 17 jQuery
jquery 键盘事件的使用方法详解
Sep 13 jQuery
js操作二进制数据方法
Mar 03 Javascript
vue axios请求超时的正确处理方法
Apr 02 Javascript
socket在egg中的使用实例代码详解
May 30 Javascript
vue + typescript + 极验登录验证的实现方法
Jun 27 Javascript
详解vue-cli项目开发/生产环境代理实现跨域请求
Jul 23 Javascript
JQuery事件委托(适用于给动态生成的脚本元素添加事件)
Feb 01 jQuery
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
风味层面去分析咖啡油脂
2021/03/03 咖啡文化
PHP读写文件的方法(生成HTML)
2006/11/27 PHP
PHP session常见问题集锦及解决办法总结
2007/03/18 PHP
PHP垃圾回收机制引用计数器概念分析
2013/06/24 PHP
PHP中strtr字符串替换用法详解
2014/11/26 PHP
php array_multisort 对数组进行排序详解及实例代码
2016/10/27 PHP
关于PHP虚拟主机概念及如何选择稳定的PHP虚拟主机
2018/11/20 PHP
学习YUI.Ext 第二天
2007/03/10 Javascript
jquery 插件 任意位置浮动固定层
2008/12/25 Javascript
javascript中普通函数的使用介绍
2013/12/19 Javascript
学习JavaScript设计模式之迭代器模式
2016/01/19 Javascript
Javascript中的arguments对象
2016/06/20 Javascript
JS实现将数字金额转换为大写人民币汉字的方法
2016/08/02 Javascript
nodejs如何获取时间戳与时间差
2016/08/03 NodeJs
Jquery Easyui分割按钮组件SplitButton使用详解(17)
2016/12/18 Javascript
Bootstrap table表格简单操作
2017/02/07 Javascript
原生JS京东轮播图代码
2017/03/22 Javascript
JS实现移动端按首字母检索城市列表附源码下载
2017/07/05 Javascript
原生JS实现烟花效果
2020/03/10 Javascript
Python二分法搜索算法实例分析
2015/05/11 Python
Python下载懒人图库JavaScript特效
2015/05/28 Python
python删除指定类型(或非指定)的文件实例详解
2015/07/06 Python
python 调用win32pai 操作cmd的方法
2017/05/28 Python
Python内建模块struct实例详解
2018/02/02 Python
对python pandas读取剪贴板内容的方法详解
2019/01/24 Python
python3.6 tkinter实现屏保小程序
2019/07/30 Python
Python爬虫:url中带字典列表参数的编码转换方法
2019/08/21 Python
python使用自定义钉钉机器人的示例代码
2020/06/24 Python
如何以Winsows Service方式运行JupyterLab
2020/08/30 Python
C语言笔试题回忆
2015/04/02 面试题
体育教育毕业生自荐信
2013/11/21 职场文书
宿舍使用违章电器检讨书
2014/01/12 职场文书
心理健康日活动总结
2014/05/08 职场文书
授权委托书(公民个人适用)
2014/09/19 职场文书
大学生个人总结范文
2015/02/15 职场文书
医生个人年度总结
2015/02/28 职场文书