php结合imgareaselect实现图片裁剪

引用CSS

rush:xhtml;"> /js/jquery.imgareaselect-0.9.10/css/imgareaselect-default.css

引用js

rush:js;"> /js/jquery.imgareaselect-0.9.10/scripts/jquery.imgareaselect.min.js /js/AjaxFileUploaderV2.1/ajaxfileupload.js

html

rush:xhtml;">

jQuery代码

rush:js;"> $("#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);
           }
         });
       }

确定裁剪

rush:js;"> //确定剪切 $("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]","none"); $("input[name=btnSubmit]","none"); break; } }); return false; });

服务器端PHP代码

$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->PI<a href="https://www.jb51.cc/tag/PHP/" target="_blank" class="keywords">PHP</a>_ImageCrop($image,$width,$height);//裁剪 imagejpeg($<a href="https://www.jb51.cc/tag/cop/" target="_blank" class="keywords">cop</a>y,$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); 
image<a href="https://www.jb51.cc/tag/cop/" target="_blank" class="keywords">cop</a>yresampled($temp,$image,$h,$h); 
return $temp; 

}

以上所述就是本文的全部内容了,希望大家能够喜欢。

相关文章

什么是深拷贝与浅拷贝?深拷贝与浅拷贝是js中处理对象或数据...
前言 今天复习了一些前端算法题,写到一两道比较有意思的题:...
最近在看回JavaScript的面试题,this 指向问题是入坑前端必须...
js如何实现弹出form提交表单?(图文+视频)
js怎么获取复选框选中的值
js如何实现倒计时跳转页面