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处理VBArray的函数使用说明
May 11 Javascript
js 内存释放问题
Apr 25 Javascript
Ubuntu 11.10 安装Node.js的方法
Nov 30 Javascript
禁用页面部分JavaScript方法的具体实现
Jul 31 Javascript
BootStrap实现树形目录组件代码详解
Jun 21 Javascript
浅谈addEventListener和attachEvent的区别
Jul 14 Javascript
JS实现兼容火狐及IE iframe onload属性的遮罩层隐藏及显示效果
Aug 23 Javascript
Javascript实现前端简单的路由实例
Sep 11 Javascript
利用JS实现点击按钮后图片自动切换的简单方法
Oct 24 Javascript
AngularJS基于MVC的复杂操作实例讲解
Dec 31 Javascript
微信小程序批量监听输入框对按钮样式进行控制的实现代码
Oct 12 Javascript
jquery实现垂直手风琴导航栏
Feb 18 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
一个颜色轮换的简单例子
2006/10/09 PHP
台湾中原大学php教程孙仲岳主讲
2008/01/07 PHP
关于页面优化和伪静态
2009/10/11 PHP
PHP 身份验证方面的函数
2009/10/11 PHP
PHP程序级守护进程的实现与优化的使用概述
2013/05/02 PHP
解析thinkphp基本配置 convention.php
2013/06/18 PHP
php中Y2K38的漏洞解决方法实例分析
2014/09/22 PHP
thinkphp3.2.2前后台公用类架构问题分析
2014/11/25 PHP
PHP生成图片验证码功能示例
2017/01/12 PHP
php制作基于xml的RSS订阅源功能示例
2017/02/08 PHP
ThinkPHP使用getlist方法实现数据搜索功能示例
2017/05/08 PHP
Script的加载方法小结
2011/01/12 Javascript
node.js中的fs.fsync方法使用说明
2014/12/15 Javascript
JavaScript随机生成信用卡卡号的方法
2015/04/07 Javascript
轻量级网页遮罩层jQuery插件用法实例
2015/07/31 Javascript
利用jQuery实现漂亮的圆形进度条倒计时插件
2015/09/30 Javascript
jQuery层次选择器用法示例
2016/09/09 Javascript
原生JS取代一些JQuery方法的简单实现
2016/09/20 Javascript
jquery实现数字输入框
2017/02/22 Javascript
使用jQuery实现两个div中按钮互换位置的实例代码
2017/09/21 jQuery
用Webpack构建Vue项目的实践
2017/11/07 Javascript
vue中使用input[type=&quot;file&quot;]实现文件上传功能
2018/09/10 Javascript
jQuery 操作 HTML 元素和属性的方法
2018/11/12 jQuery
JS实现可以用键盘方向键控制的动画
2020/12/11 Javascript
python批量提交沙箱问题实例
2014/10/08 Python
python3使用QQ邮箱发送邮件
2020/05/20 Python
Python数据结构与算法(几种排序)小结
2019/06/22 Python
python实现串口自动触发工作的示例
2019/07/02 Python
html5指南-1.html5全局属性(html5 global attributes)深入理解
2013/01/07 HTML / CSS
Expedia丹麦:全球领先的旅游网站
2018/03/18 全球购物
新加坡网上美容店:Hermo新加坡
2019/06/19 全球购物
vue项目实现分页效果
2021/03/24 Vue.js
中学教师师德承诺书
2014/05/23 职场文书
2015年科协工作总结
2015/05/19 职场文书
Java Optional<Foo>转换成List<Bar>的实例方法
2021/06/20 Java/Android
一文搞清楚MySQL count(*)、count(1)、count(col)区别
2022/03/03 MySQL