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 setInterval与setTimeout(定时执行与循环执行)的代码(可以传入参数)
Jun 11 Javascript
jQuery 下拉列表 二级联动插件分享
Mar 29 Javascript
JavaScript利用正则表达式去除日期中的“-”
Jul 01 Javascript
使用Bootstrap美化按钮实例代码(demo)
Feb 03 Javascript
原生js实现可拖拽效果
Feb 28 Javascript
ES6教程之for循环和Map,Set用法分析
Apr 10 Javascript
移动端网页开发调试神器Eruda的介绍与使用技巧
Oct 30 Javascript
JS实现登录页密码的显示和隐藏功能
Dec 06 Javascript
js读取本地文件的实例
Dec 22 Javascript
vue 优化CDN加速的方法示例
Sep 19 Javascript
element-ui上传一张图片后隐藏上传按钮功能
May 22 Javascript
vue-cli4.x创建企业级项目的方法步骤
Jun 18 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更改目录及子目录下所有的文件后缀扩展名的代码
2010/10/12 PHP
解决PHP mysql_query执行超时(Fatal error: Maximum execution time …)
2013/07/03 PHP
Yii2.0中使用js异步删除示例
2017/03/10 PHP
解决Laravel5.x的php artisan migrate数据库迁移创建操作报错SQLSTATE[42000]
2020/04/06 PHP
使用Rancher在K8S上部署高性能PHP应用程序的教程
2020/07/10 PHP
Javascript模板技术
2007/04/27 Javascript
JQuery 实现的页面滚动时浮动窗口控件
2009/07/10 Javascript
this和执行上下文实现代码
2010/07/01 Javascript
javascript getElementsByClassName实现代码
2010/10/11 Javascript
jquery实现图片裁剪思路及实现
2013/08/16 Javascript
jquery得到font-size属性值实现代码
2013/09/30 Javascript
Jquery EasyUI的添加,修改,删除,查询等基本操作介绍
2013/10/11 Javascript
javascript学习笔记(五)原型和原型链详解
2014/10/08 Javascript
jquery中radio checked问题
2015/03/16 Javascript
简介JavaScript中Math.LOG10E属性的使用
2015/06/14 Javascript
Bootstrap每天必学之基础排版
2015/11/20 Javascript
js和jquery实现监听键盘事件示例代码
2020/06/24 Javascript
jQuery实现简单倒计时功能的方法
2016/07/04 Javascript
HTML页面定时跳转方法解析(2种任选)
2016/12/22 Javascript
用JS实现简单的登录验证功能
2017/07/28 Javascript
解决vue打包项目后刷新404的问题
2018/03/06 Javascript
JavaScript正则表达式验证登录实例
2020/03/18 Javascript
js实现删除json中指定的元素
2020/09/22 Javascript
[53:15]2018DOTA2亚洲邀请赛3月29日 小组赛A组 KG VS OG
2018/03/30 DOTA
[01:29:17]RNG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
Python 使用requests模块发送GET和POST请求的实现代码
2016/09/21 Python
Flask框架的学习指南之制作简单blog系统
2016/11/20 Python
python并发编程多进程 模拟抢票实现过程
2019/08/20 Python
Python selenium模块实现定位过程解析
2020/07/09 Python
HTML5 声明兼容IE的写法
2011/05/16 HTML / CSS
购买英国原创艺术:Art Gallery
2018/08/25 全球购物
Brasty波兰:香水、化妆品、手表网上商店
2019/04/15 全球购物
奥地利时尚、美容、玩具和家居之家:Kastner & Öhler
2020/04/26 全球购物
清洁工个人总结
2015/03/04 职场文书
法律意见书范文
2015/05/20 职场文书
vue3中的组件间通信
2021/03/31 Vue.js