cropper.js实现上传、裁剪、缩放图片
2018-12-26 11:05
393 查看
结构部分
<div class="cjphotouser" style="display: none;"> <div class="userimageboxuser"> <!--用户上传图片的显示canvas--> <canvas id="cvsuser" ></canvas> </div> <!--完成裁剪后保存的canvas--> <img src="#" alt="" class="corpperedPicImg" id="corpperedPicImg" /> <div class="clearfix btngroup"> <div class="leftbtn"> <span class="uploadimage"></span> <!--图片上传按钮--> <input type="file" id="picfile" class="uppicbtn" name="picfile" onchange="changepic(this)" accept="image/*"> </div> <div class="rightbtn saveimage"></div> </div> </div>
js部分
//上传完成后,显示图片 function changepic(that){ var fileSize = that.files[0].size; var size = fileSize / 1024; var cale = DPR(); //限制照片大小不得超过5M if(size<5000){ //判断移动端设备,点击上传时允许拍照或从相册中选取图片 if (getIos()) { document.getElementById('picfile').removeAttribute("capture"); document.getElementById('qrfile').removeAttribute("capture"); }; if(this.value==''){ hasFile = false; }else{ hasFile = true; } if(cjType=='user'){ var readuser = new FileReader(); usersF = document.getElementById('picfile').files[0]; readuser.readAsDataURL(usersF); readuser.onload = function(e) { var userImage = new Image(); userImage.src = e.target.result; userImage.onload = function(){ // 获取想要转换的 DOM 节点 var dom1 = document.querySelector('.userimageboxuser'); var box1 = window.getComputedStyle(dom1); var oWidth = userImage.width/2; var oHeight = userImage.height/2; // DOM 节点计算后宽高 var width1 = parseValue(box1.width); var height1 = parseValue(box1.height); // 获取像素比 var scaleBy1 = DPR(); var canvas2 = 1b5d8 document.getElementById("cvsuser"); // 设定 canvas 元素属性宽高为 DOM 节点宽高 * 像素比 canvas2.width = width1 * scaleBy1; canvas2.height = height1 * scaleBy1; // 设定 canvas css宽高为 DOM 节点宽高 canvas2.style.width = `${width1}px`; canvas2.style.height = `${height1}px`; // 获取画笔 var context1 = canvas2.getContext('2d'); //处理图片居中 context1.drawImage(userImage, canvas2.width/2-oWidth, canvas2.height/2-oHeight); var options = { aspectRatio: 750 / 1334, //最终生成图片的常高比 viewMode:0, //0:没有限制;1:裁剪框必须在图片内移动;2:2图片 不全部铺满1;3:图片填充整个裁剪框 dragMode :'move',//拖拽模式,只能移动裁剪框 responsive:true, //调整窗口大小时,重新渲染cropper cropBoxResizable:false, //调整裁剪框大小 autoCropArea:1, //自动裁剪面积大小和图片的对比 center:true, cropBoxMovable :false, //是否允许移动裁剪框 autoCrop:true, //初始化时,自动生成裁剪框 background:true, //显示裁剪区域的背景方格 modal:false, guides:true, //显示在裁剪框上方的虚线 highlight:true, zoomOnWheel:true, //是否可以通过移动鼠标放大图像 zoomOnTouch:true, //是否可以通过拖动触摸放大图像 zoomable:true,//是否允许放大图像 movable:true, //是否允许移动后面的图片 rotatable:true, //是否允许旋转图像 scalable:true,//是否允许缩放图像 resizable:true, minContainerWidth:200,//容器的最小宽度 minContainerHeight:100,//容器的最小高度 minCropBoxWidth:100,//裁剪层的最小宽度 minCropBoxHeight:50,//裁剪层的最小高度 wheelZoomRatio:0.1, //鼠标移动图像时,定义缩放比例 }; if(cropperImg){ cropperImg.destroy(); } cropperImg = new Cropper(canvas2, options); layer.msg("请手动调整照片到合适大小和位置",{ time:5000 }); } }; } }else{ layer.msg("照片不能大于5M",{ time:4000 }); that.value=""; return false; } };
相关文章推荐
- cropper.js 实现HTML5 裁剪图片并上传(裁剪上传头像。)
- cropper.js和exif.js实现头像上传缩放裁剪旋转
- cropper.js 实现裁剪图片并上传(PC端)
- cropper js基于vue的图片裁剪上传功能的实现代码
- cropper.js 实现裁剪图片并上传(移动端)
- cropper.js 实现HTML5 裁剪图片并上传(裁剪上传头像。)
- Cropper.js 实现裁剪图片并上传(PC端)
- php+js实现图片的上传、裁剪、预览、提交示例
- cropper.js裁剪图片,上传图片
- php+js实现图片的上传、裁剪、预览、提交示例
- 用cropper.js裁剪图片并上传到服务器,解析base64转存图片到本地
- vue.js 实现图片本地预览 裁剪 压缩 上传功能
- SilvetLight 实现的一个上传图片时功能动态裁剪部分区域和缩放图片的功能
- js实现头像图片切割缩放及无刷新上传图片的方法
- vue+cropperjs实现图片剪裁,上传七牛云
- js实现头像图片切割缩放及无刷新上传图片的方法
- java读取图片处理实现缩放裁剪,用于个人信息中上传图片自定义头像大小
- fileuploadJs+JcropJs+php综合小应用 实现图片拖拽上传与裁剪功能的demo
- node.js+express 实现CSDN上传头像功能 (包含图片的缩放,生成头像缩略图)
- 图片上传裁剪插件cropper.js的API详解