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 相关文章推荐
Javascript miscellanea -display data real time, using window.status
Jan 09 Javascript
Google 静态地图API实现代码
Nov 19 Javascript
JQuery获取当前屏幕的高度宽度的实现代码
Jul 12 Javascript
jQuery对JSON数据进行排序输出的方法
Jun 24 Javascript
jquery UI Datepicker时间控件的使用及问题解决
Apr 28 Javascript
如何在JS中实现相互转换XML和JSON
Jul 19 Javascript
javascript中异常处理案例(推荐)
Oct 03 Javascript
JS实现的验证身份证及获取地区功能示例
Jan 16 Javascript
jQuery实现每隔一段时间自动更换样式的方法分析
May 03 jQuery
获取layer.open弹出层的返回值方法
Aug 20 Javascript
vue封装一个简单的div框选时间的组件的方法
Jan 06 Javascript
JavaScript如何判断input数据类型
Feb 06 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
Windows下的PHP5.0详解
2006/11/18 PHP
Google Voice 短信发送接口PHP开源版(2010.5更新)
2010/07/22 PHP
php数组的概述及分类与声明代码演示
2013/02/26 PHP
去除php注释和去除空格函数分享
2014/03/13 PHP
php密码生成类实例
2014/09/24 PHP
PHP编程实现的TCP服务端和客户端功能示例
2018/04/13 PHP
gearman管理工具GearmanManager的安装与php使用方法示例
2020/02/27 PHP
javascript String 的扩展方法集合
2008/06/01 Javascript
js保留两位小数使用toFixed实现
2013/07/29 Javascript
JS生成不重复的随机数组的简单实例
2016/07/10 Javascript
关于Javascript回调函数的一个妙用
2016/08/29 Javascript
微信小程序 PHP生成带参数二维码
2017/02/21 Javascript
原生js实现鼠标跟随效果
2017/02/28 Javascript
bootstrap 通过加减按钮实现输入框组功能
2017/11/15 Javascript
微信小程序学习笔记之获取位置信息操作图文详解
2019/03/29 Javascript
javascript事件监听与事件委托实例详解
2019/08/16 Javascript
vscode 使用Prettier插件格式化配置使用代码详解
2020/08/10 Javascript
vue之封装多个组件调用同一接口的案例
2020/08/11 Javascript
python在Windows下安装setuptools(easy_install工具)步骤详解
2016/07/01 Python
python 统计数组中元素出现次数并进行排序的实例
2018/07/02 Python
Python之inspect模块实现获取加载模块路径的方法
2018/10/16 Python
解决python中os.listdir()函数读取文件夹下文件的乱序和排序问题
2018/10/17 Python
利用python实现在微信群刷屏的方法
2019/02/21 Python
如何使用Python实现自动化水军评论
2019/06/26 Python
python字符串格式化方式解析
2019/10/19 Python
Python操作多维数组输出和矩阵运算示例
2019/11/28 Python
python开发入门——列表生成式
2020/09/03 Python
css3动画事件—webkitAnimationEnd与计时器time事件
2013/01/31 HTML / CSS
IE浏览器单独写CSS样式的几种方法
2014/10/14 HTML / CSS
周仰杰(JIMMY CHOO)英国官方网站:闻名世界的鞋子品牌
2018/10/28 全球购物
如何在Cookie里面保存Unicode和国际化字符
2013/05/25 面试题
九年级数学教学反思
2014/02/02 职场文书
校本研修个人总结
2015/02/28 职场文书
学子宴致辞大全
2015/07/27 职场文书
2016年端午节校园广播稿
2015/12/18 职场文书
Python可视化动图组件ipyvizzu绘制惊艳的可视化动图
2022/04/21 Python