首页 > 编程 > JavaScript > 正文

php结合imgareaselect实现图片裁剪

2019-11-20 12:06:11
字体:
来源:转载
供稿:网友

引用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;   }

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表