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 相关文章推荐
二级域名转向类
Nov 09 Javascript
A标签中通过href和onclick传递的this对象实现思路
Apr 19 Javascript
JQuery中form验证出错信息的查看方法
Oct 08 Javascript
js 自动播放的实例代码
Nov 19 Javascript
smartcrop.js智能图片裁剪库
Oct 14 Javascript
Javascript简单实现面向对象编程继承实例代码
Nov 27 Javascript
JS及JQuery对Html内容编码,Html转义
Feb 17 Javascript
微信小程序注册60s倒计时功能 使用JS实现注册60s倒计时功能
Aug 16 Javascript
详解javascript中的Error对象
Apr 25 Javascript
微信小程序实现轨迹回放的示例代码
Dec 13 Javascript
解决vue bus.$emit触发第一次$on监听不到问题
Jul 28 Javascript
微信小程序实现电子签名功能
Jul 29 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
第八节 访问方式 [8]
2006/10/09 PHP
php 文件缓存函数
2011/10/08 PHP
基于PHP生成静态页的实现方法
2013/05/10 PHP
浅谈ThinkPHP的URL重写
2014/11/25 PHP
jQuery+Ajax+PHP“喜欢”评级功能实现代码
2015/10/08 PHP
TP框架实现上传一张图片和批量上传图片的方法分析
2020/04/23 PHP
JavaScript类型系统之正则表达式
2016/01/05 Javascript
JavaScript操作选择对象的简单实例
2016/05/16 Javascript
详解angular中如何监控dom渲染完毕
2017/01/03 Javascript
详解Vue webapp项目通过HBulider打包原生APP
2018/06/29 Javascript
Vue中android4.4不兼容问题的解决方法
2018/09/04 Javascript
vue 监听某个div垂直滚动条下拉到底部的方法
2018/09/15 Javascript
d3绘制基本的柱形图的实现代码
2018/12/12 Javascript
JavaScript缺少insertAfter解决方案
2020/07/03 Javascript
详解JavaScript执行模型
2020/11/16 Javascript
在Python程序和Flask框架中使用SQLAlchemy的教程
2016/06/06 Python
读写json中文ASCII乱码问题的解决方法
2016/11/05 Python
Python爬虫实例_城市公交网络站点数据的爬取方法
2018/01/10 Python
Python实现手写一个类似django的web框架示例
2018/07/20 Python
Python3 获取一大段文本之间两个关键字之间的内容方法
2018/10/11 Python
对Python的多进程锁的使用方法详解
2019/02/18 Python
Centos7 下安装最新的python3.8
2019/10/28 Python
Python实现定时监测网站运行状态的示例代码
2020/09/30 Python
纯CSS3代码实现switch滑动开关按钮效果
2016/08/30 HTML / CSS
迪斯尼商品官方网站:ShopDisney
2016/08/01 全球购物
印尼最大的在线购物网站:MatahariMall.com
2016/08/26 全球购物
越南电子产品购物网站:FPT Shop
2017/12/02 全球购物
北美最大的零售退货翻新商:VIP Outlet
2019/11/21 全球购物
违反学校规定检讨书
2014/01/18 职场文书
党的群众教育实践活动实施方案
2014/06/12 职场文书
行政处罚告知书
2015/07/01 职场文书
志愿者服务宣传标语口号
2015/12/26 职场文书
PHP遍历数组的6种方式总结
2021/11/17 PHP
Win11查看设备管理器
2022/04/19 数码科技
Sql Server 行数据的某列值想作为字段列显示的方法
2022/04/20 SQL Server
Mysql索引失效 数据库表中有索引还是查询很慢
2022/05/15 MySQL