cropperjs是一款非常强大却又简单的图片裁剪工具,它可以进行非常灵活的配置,支持手机端使用,支持包括IE9以上的现代浏览器。

  • 支持 39 个选项
  • 支持27种方法
  • 支持6个事件
  • 支持触摸(移动)
  • 支持缩放
  • 支持旋转
  • 支持缩放(翻转)
  • 支持多种作物
  • 支持在画布上裁剪
  • 支持通过画布在浏览器端裁剪图像
  • 支持翻译 Exif 方向信息
  • 跨浏览器支持

官方github文档:https://github.com/fengyuanchen/cropperjs

使用方法

1.下载

npm install cropperjs

2.在项目中引入

import 'cropperjs/dist/cropper.css'
import Cropper from 'cropperjs'

3.获取dom对象 调用构造函数

<img :src="data:image" alt="" ref="img" />

注意需要用块元素(容器)包裹图像或画布元素

例如:

< div > < img  id =" image " src =" picture.jpg " >
</ div >

确保图像大小完全合适容器

img {display : block; /* 这个规则很重要,请不要忽略这个 */ max-width : 100 % ;
}

调用构造函数 传入配置对象 得到cropper 实例对象

    // 获取Dom对象const image = this.$refs.img// 得到实例对象this.cropper = new Cropper(image, {aspectRatio: 1, // 裁剪框尺寸viewMode: 1, // 限制裁剪框不超过画布的大小dragMode: 'move', // 定义裁剪器的拖动模式。 移动画布cropBoxResizable: false, // 通过拖动来调整裁剪框的大小cropBoxMovable: false, // 通过拖动移动裁剪框。background: false // 显示容器的网格背景})

因为我们在方法中需要调用cropper 实例对象上的getCroppedCanvas() 方法得到裁切后的图片信息将cropper 保存到了data中

4.获取裁切后的图片 (包装为Promise) 可以在下面通过 await 调用

    getCroppedCanvas () {return new Promise(resolve => {this.cropper.getCroppedCanvas().toBlob(blob => {resolve(blob)})})}

5.获取到裁切之后的图像

const file = await this.getCroppedCanvas()

代码演示

<template><div class="updata-photo"><img :src="data:image" alt="" ref="img" /><van-nav-barleft-text="取消"right-text="确认"@click-left="$emit('close')"@click-right="onClickRight"/></div>
</template><script>
import { setPhotofile } from '@/api/user.js'
import 'cropperjs/dist/cropper.css'
import Cropper from 'cropperjs'
export default {name: 'UpdataPhoto',props: {value: {type: String,require: true},file: {type: File,require: true}},data () {return {image: window.URL.createObjectURL(this.file),cropper: null}},methods: {// 获取裁切后的图片 (包装为Promise) 可以在下面通过 await 调用getCroppedCanvas () {return new Promise(resolve => {this.cropper.getCroppedCanvas().toBlob(blob => {resolve(blob)})})},// 发起请求async onClickRight () {this.$toast.loading({message: '修改中...',forbidClick: true})// 获取到裁切之后的图像const file = await this.getCroppedCanvas()// 如果要求 Content-Type 是 multipart/form-data,则一定要提交FormData 数据对象,专门用于文件上传的,不能提交{}const fd = new FormData()fd.append('photo', file)const res = await setPhotofile(fd).catch(err => err)if (res.status !== 201) {this.$toast.fail('修改失败')return}this.$toast.success('修改成功')// 修改完成之后 更新父组件中的地址并关闭弹出层this.$emit('input', res.data.data.photo)this.$emit('close')}},mounted () {const image = this.$refs.imgthis.cropper = new Cropper(image, {aspectRatio: 1, // 裁剪框尺寸viewMode: 1, // 限制裁剪框不超过画布的大小dragMode: 'move', // 定义裁剪器的拖动模式。 移动画布cropBoxResizable: false, // 通过拖动来调整裁剪框的大小cropBoxMovable: false, // 通过拖动移动裁剪框。background: false // 显示容器的网格背景})}
}
</script><style lang="less" scoped>
.updata-photo {img {display: block;width: 100%;}.van-nav-bar {position: fixed;bottom: 0;left: 0;right: 0;background-color: transparent;}
}
</style>

图片裁切器Cropper.js的使用相关推荐

  1. web图片裁切插件 cropper.js 详细介绍

    cropper.js一个用来处理图片的插件,可以使用它来实现图片的各种模式下的裁切效果,当我们在做一个上传头像或者上传图片功能的时候,需要用户裁切出用户想要的图片位置就可以利用这个插件来实现','cr ...

  2. Vue项目中使用图片裁切器 cropperjs (头像裁切)

    cropperjs官方文档 cropperjs结合element-ui 组件后的显示效果: 1. npm 安装 cropperjs cmd命令行输入:npm install cropperjs --s ...

  3. 图片裁剪工具之cropper.js

    图片裁剪工具之cropper.js cropper.js 示例Demo 具体使用示例 cropper.js Cropper.js 是一款非常强大却又简单的图片裁剪工具,它可以进行非常灵活的配置,支持手 ...

  4. 头像上传和图片裁剪功能(cropper.js)

    <template><div class="user-profile"><input type="file" name=" ...

  5. layui后台管理、图片裁切、cropper富文本编辑器实现

    需求:后台管理系统一般都会有图文混排功能(比如新闻应用,电商商品详情),这个一般使用富文本编辑器来实现:还有一个就是图片的裁切(比如用户的头像,比如博客的封面),因为在开发这两个功能的时候,也遇到了很 ...

  6. html手机端的图片阅读器,兼容移动端与电脑端的图片查看器viewer.js插件

    Viewer.js 有以下特点: 支持移动设备触摸事件 支持响应式 支持放大/缩小 支持旋转(类似微博的图片旋转) 支持水平/垂直翻转 支持图片移动 支持键盘 支持全屏幻灯片模式(可做屏保) 支持缩略 ...

  7. 图片查看器 Viewer.js

    插件简介 Viewer.js 是一款强大的图片查看器,提供了纯 JS 版本和 jQuery 版本,具有以下特点: 支持移动设备触摸事件 支持响应式 支持放大.缩小 支持旋转(类似微博的图片旋转) 支持 ...

  8. input file图片上传(使用OSS Javscrtipt 上传到服务器)以及图片裁剪(cropper.js)

    一.图片上传 (1)使用 <input type="file" accept="image/*" name="file" @chang ...

  9. 前端裁切图片插件之cropper介绍

    给大家介绍一个前端非常实用的依赖于jquery的图片裁切插件cropper. 因为前端无法做到图片的裁切,所以实际中需要用cropper和后台的GraphicsMagick相互配合. 先贴上cropp ...

  10. 强大的jQuery图片查看器插件Viewer.js

    简介 Viewer.js 是一款强大的图片查看器 Viewer.js 有以下特点: 支持移动设备触摸事件 支持响应式 支持放大/缩小 支持旋转(类似微博的图片旋转) 支持水平/垂直翻转 支持图片移动 ...

最新文章

  1. Object.entries(obj)
  2. python程序员月薪多少-据说做Python程序员,都月薪上万?
  3. wamp解决ajax跨域问题
  4. c、c++、Java和gcc写Hello World
  5. IOS基础之计算器的编写
  6. 【一起学OpenFOAM】04 OpenFOAM的学习资源
  7. Springboot项目搭建(三)整合thymeleaf模板
  8. 设计模式 C++单例模式
  9. Valine+Leancloud搭建评论模块
  10. 浅谈Empty、Nothing
  11. hadoop大数据架构
  12. cocos2dx 游戏中内存优化
  13. 对索引存储与散列存储的一些形而上的思考
  14. 解决win10和ubuntu18,win10时间不同步问题
  15. Spectral-based graph convolutional neural network
  16. 字符串查找工具 批量搜索文件的文本内容工具
  17. 中国新出海故事:人、疫情与纽带
  18. 2022好看的校园表白墙程序源码Ver2.0
  19. css中设置交叉轴内容为拉伸,CSS-弹性布局2-交叉轴
  20. [附源码]java毕业设计求职招聘平台开发

热门文章

  1. 天猫万能红外遥控器拆解
  2. 容斥原理解决某个区间[1,n]闭区间与m互质数数量问题
  3. 人大金仓删除字段_人大金仓数据库V7升级V8遇到的一些问题
  4. GUI学习笔记——04更改背景板颜色,鼠标进入事件
  5. Datawhale组队学习周报(第029周)
  6. 大数据高级开发工程师——大数据相关工具之一 Sqoop
  7. GitHub 上有哪些考研神器?
  8. mysql主键约束(primary key)
  9. 如何让搜狗收录方法分享
  10. docker安装ng+tomcat+es+kiba+sql