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 eval和JSON之间的联系
Dec 31 Javascript
js调用iframe实现打印页面内容的方法
Mar 04 Javascript
深入分析js的冒泡事件
Dec 05 Javascript
使用AngularJS编写较为优美的JavaScript代码指南
Jun 19 Javascript
深入解析JavaScript中的arguments对象
Jun 12 Javascript
Javascript基础回顾之(三) js面向对象
Jan 31 Javascript
Angular实现类似博客评论的递归显示及获取回复评论的数据
Nov 06 Javascript
Vue.js单向绑定和双向绑定实例分析
Aug 14 Javascript
CKeditor富文本编辑器使用技巧之添加自定义插件的方法
Jun 14 Javascript
javascript数组的定义及操作实例
Nov 10 Javascript
详解vue 组件注册
Nov 20 Vue.js
vue使用过滤器格式化日期
Jan 20 Vue.js
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正则表达式(regar expression)
2011/09/10 PHP
Ping服务的php实现方法,让网站快速被收录
2012/02/04 PHP
PHP使用CURL_MULTI实现多线程采集的例子
2014/07/29 PHP
php中使用url传递数组的方法
2015/02/11 PHP
PHP超牛逼无限极分类生成树方法
2015/05/11 PHP
PHP和MySql中32位和64位的整形范围是多少
2016/02/18 PHP
centos+php+coreseek+sphinx+mysql之一coreseek安装篇
2016/10/25 PHP
简单谈谈PHP中的Reload操作
2016/12/12 PHP
JavaScript入门教程(6) Window窗口对象
2009/01/31 Javascript
简单谈谈javascript Date类型
2015/09/06 Javascript
jQuery模拟下拉框选择对应菜单的内容
2017/03/07 Javascript
JS控件bootstrap datepicker使用方法详解
2017/03/25 Javascript
javascript帧动画(实例讲解)
2017/09/02 Javascript
mac上配置Android环境变量的方法
2018/07/08 Javascript
Vue2.0生命周期的理解
2018/08/20 Javascript
vue自定义全局共用函数详解
2018/09/18 Javascript
jQuery实现的别踩白块小游戏完整示例
2019/01/07 jQuery
JavaScript日期库date-fn.js使用方法解析
2020/09/09 Javascript
js实现鼠标滑动到某个div禁止滚动
2020/09/17 Javascript
[03:52]显微镜下的DOTA2第三期——英雄在无聊的时候干什么
2014/06/20 DOTA
[04:19]DOTA2完美大师赛第四天精彩集锦
2017/11/26 DOTA
Python实现单词翻译功能
2017/06/06 Python
Python 判断文件或目录是否存在的实例代码
2018/07/19 Python
使用Python完成15位18位身份证的互转功能
2019/11/06 Python
python GUI库图形界面开发之PyQt5信号与槽多窗口数据传递详细使用方法与实例
2020/03/08 Python
Python类绑定方法及非绑定方法实例解析
2020/10/09 Python
html5 canvas 简单画板实现代码
2012/01/05 HTML / CSS
处理textarea中的换行和空格
2019/12/12 HTML / CSS
维珍澳洲航空官网:Virgin Australia
2017/09/08 全球购物
印尼在线购买隐形眼镜网站:Lensza.co.id
2019/04/27 全球购物
房地产开盘策划方案
2014/02/10 职场文书
党的群众路线教育实践活动对照检查材料思想汇报(党员篇)
2014/09/25 职场文书
党员个人对照检查材料
2014/10/01 职场文书
2015年幼儿园教研活动总结
2015/03/25 职场文书
2016婚礼主持词开场白
2015/11/24 职场文书
Redis超详细讲解高可用主从复制基础与哨兵模式方案
2022/04/07 Redis