最近做一个图片上传需要裁剪一下的功能然后百度了一下,找到了cropperjs
说明文档 https://www.npmjs.com/package/cropperjs
这是一个简单的基础使用
<!DOCTYPE html> <html lang=”en”> <head> <meta charset=”UTF-8″> <meta http-equiv=”X-UA-Compatible” content=”IE=edge”> <meta name=”viewport” content=”width=device-width, initial-scale=1.0″> <title>上传图片</title> <!– 样式 –> <link rel=”stylesheet” href=’./node_modules/cropperjs/dist/cropper.css’ /> <!– js –> <script src=”./node_modules/cropperjs/dist/cropper.js”></script> <style> .allbox{ width: 100%; display: flex; margin-bottom: 20px; }
/* 装上传图片 */ .box1{ width: 500px; height: 500px; background: rgba(40, 40, 40, 0.3); } /* 被裁剪展示图片容器 */ .box2{ width: 100px; height: 100px; margin-left:100px; }
</style> </head> <body> <div class=”allbox”> <!– 展示图片 –> <div class=”box1″> <img id=”img1″> </div>
<div class=”box2″>
</div> </div> <input id=”input1″ type=”file”></input> <button id=”button1″>保存图片</button>
<script>
let img1 =document.getElementById(‘img1’) let input1 = document.getElementById(‘input1’) let button1 = document.getElementById(‘button1’)
// 上传的图片储存一下 let fileImg; // 声明一个变量 let cropper = new Cropper(img1,{ aspectRatio:1/1, // 裁切比例 viewMode:1, // 0 无限制 1 裁剪框不超过图片 2具体个1差不多没看出 ,3拉伸图片 autoCropArea: 0.5 , //裁切框大小 默认0.8(原图的80%) // 跟多配置选项 https://www.npmjs.com/package/cropperjs })
//上传图片时 input1.onchange = (event) => {
fileImg = event.target.files[0]
// cropper.replace(url,[hasSameSize]) 设置图片 hasSameSize type:Boolean,Default: false cropper.replace(URL.createObjectURL(fileImg),false)
}
// 保存时 button1.onclick = () => { let base64Img = cropper.getCroppedCanvas().toDataURL() console.log(base64Img) cropper.getCroppedCanvas().toBlob((blob) => { // 得到 blob 图片 console.log(‘blob’,blob) // 得到 file 文件
console.log(‘file’,new window.File([blob], fileImg.name, {type: fileImg.type})) }) }
</script> </body> </html>