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 相关文章推荐
ECMAScript 创建自己的js类库
Nov 22 Javascript
使用js写的一个简易的投票
Nov 27 Javascript
JQuery实现表格动态增加行并对新行添加事件
Jul 30 Javascript
jquery实现向下滑出的二级导航下滑菜单效果
Aug 25 Javascript
javascript图片延迟加载实现方法及思路
Dec 31 Javascript
Javascript实现的SHA-256加密算法完整实例
Feb 02 Javascript
jQuery ajax提交Form表单实例(附demo源码)
Apr 06 Javascript
微信小程序 实现tabs选项卡效果实例代码
Oct 31 Javascript
JavaScript浏览器对象模型BOM(BrowserObjectModel)实例详解
Nov 29 Javascript
js手机号批量滚动抽奖实现代码
Apr 17 Javascript
深入浅析vue全局环境变量和模式
Apr 28 Javascript
vue组件vue-esign实现电子签名
Apr 21 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
星际争霸教主Flash的ID由来:你永远不会知道他之前的ID是www!
2019/01/18 星际争霸
搜索和替换文件或目录的一个好类--很实用
2006/10/09 PHP
php中防止SQL注入的最佳解决方法
2013/04/25 PHP
php搜索文件程序分享
2015/10/30 PHP
PHP5.5安装PHPRedis扩展及连接测试方法
2017/01/22 PHP
laravel框架创建授权策略实例分析
2019/11/22 PHP
Mozilla中显示textarea中选择的文字
2006/09/07 Javascript
用JavaScript获取DOM元素位置和尺寸大小的方法
2013/04/12 Javascript
HTML页面滚动时获取离页面顶部的距离2种实现方法
2013/09/05 Javascript
javascript简单事件处理和with用法介绍
2013/09/16 Javascript
将form表单中的元素转换成对象的方法适用表单提交
2014/05/02 Javascript
jquery实现一个简单好用的弹出框
2014/09/26 Javascript
jQuery实现拖拽效果插件的方法
2015/03/23 Javascript
Javascript中arguments用法实例分析
2015/06/13 Javascript
js实现图片轮播效果
2015/12/19 Javascript
vue绑定设置属性的多种方式(5)
2017/08/16 Javascript
vue项目中使用Hbuilder打包app 设置沉浸式状态栏的方法
2018/10/22 Javascript
基于vue+uniapp直播项目实现uni-app仿抖音/陌陌直播室功能
2019/11/12 Javascript
JS co 函数库的含义和用法实例总结
2020/04/08 Javascript
openlayers实现地图弹窗
2020/09/25 Javascript
Python实现二分查找算法实例
2015/05/26 Python
PyGame贪吃蛇的实现代码示例
2018/11/21 Python
Python对接六大主流数据库(只需三步)
2019/07/31 Python
python之列表推导式的用法
2019/11/29 Python
Python 实现try重新执行
2019/12/21 Python
Python基于numpy模块实现回归预测
2020/05/14 Python
css3的图形3d翻转效果应用示例
2014/04/08 HTML / CSS
捷克电器和DJ设备网上商店:Electronic-star
2017/07/18 全球购物
法国票务网站:Ticketmaster法国
2018/07/09 全球购物
环保专项行动方案
2014/05/12 职场文书
小学音乐教师个人工作总结
2015/02/05 职场文书
毕业酒会致辞
2015/07/29 职场文书
vue组件的路由高亮问题解决方法
2021/05/11 Vue.js
Python办公自动化之教你如何用Python将任意文件转为PDF格式
2021/06/28 Python
Redis监控工具RedisInsight安装与使用
2022/03/21 Redis
解决Vmware虚拟机安装centos8报错“Section %Packages Does Not End With %End. Pane Is Dead”
2022/06/01 Servers