• vue裁剪组件vue-cropper


    一、安装使用

    1. # npm 安装
    2. npm install vue-cropper
    1. # yarn 安装
    2. yarn add vue-cropper

    2. 引入 Vue Cropper

    Vue 3 部分

    Vue 3 组件内引入

    1. npm install vue-cropper@next
    2. import 'vue-cropper/dist/index.css'
    3. import { VueCropper } from "vue-cropper";

    Vue3 全局引入

    1. import VueCropper from 'vue-cropper';
    2. import 'vue-cropper/dist/index.css'
    3. const app = createApp(App)
    4. app.use(VueCropper)
    5. app.mount('#app')

    Vue3 CDN 方式引入

    <style type="text/css" src="https://cdn.jsdelivr.net/npm/vue-cropper@1.0.2/dist/index.css">style> 

    Vue2部分

    Vue2 组件内引入

    1. import { VueCropper } from 'vue-cropper'
    2. components: {
    3. VueCropper
    4. }

    Vue2 全局引入

    1. import VueCropper from 'vue-cropper'
    2. Vue.use(VueCropper)

    Vue2 CDN 方式引入

    <script src="//cdn.jsdelivr.net/npm/vue-cropper@0.4.9/dist/index.js">script>
    Vue.use(window['vue-cropper'].default)

    nuxt 引入方式

    1. if(process.browser) {
    2. vueCropper = require('vue-cropper')
    3. Vue.use(vueCropper.default)
    4. }

    3. 代码中使用

      需要关掉本地的 mock 服务, 不然图片转化会报错 重要! 需要使用外层容器包裹并设置宽高

    1. ref="cropper"
    2. :img="option.img"
    3. :outputSize="option.size"
    4. :outputType="option.outputType"
    5. ></vueCropper>

    2. 可用回调方法

    • @realTime 实时预览事件
    • @imgMoving 图片移动回调函数
    • @cropMoving 截图框移动回调函数
    • @imgLoad 图片加载的回调, 返回结果 successerror

    1. realTime 实时预览事件

    1. realTime(data) {
    2. var previews = data
    3. var h = 0.5
    4. var w = 0.2
    5. this.previewStyle1 = {
    6. width: previews.w + "px",
    7. height: previews.h + "px",
    8. overflow: "hidden",
    9. margin: "0",
    10. zoom: h
    11. }
    12. this.previewStyle2 = {
    13. width: previews.w + "px",
    14. height: previews.h + "px",
    15. overflow: "hidden",
    16. margin: "0",
    17. zoom: w
    18. }
    19. // 固定为 100 宽度
    20. this.previewStyle3 = {
    21. width: previews.w + "px",
    22. height: previews.h + "px",
    23. overflow: "hidden",
    24. margin: "0",
    25. zoom: 100 / preview.w
    26. }
    27. // 固定为 100 高度
    28. this.previewStyle4 = {
    29. width: previews.w + "px",
    30. height: previews.h + "px",
    31. overflow: "hidden",
    32. margin: "0",
    33. zoom: 100 / preview.h
    34. }
    35. this.previews = data
    36. }
    1. <div class="show-preview" :style="{'width': previews.w + 'px', 'height': previews.h + 'px', 'overflow': 'hidden',
    2. 'margin': '5px'}">
    3. <div :style="previews.div">
    4. <img :src="option.img" :style="previews.img">
    5. div>
    6. div>
    7. <p>中等大小p>
    8. <div :style="previewStyle1">
    9. <div :style="previews.div">
    10. <img :src="previews.url" :style="previews.img">
    11. div>
    12. div>
    13. <p>迷你大小p>
    14. <div :style="previewStyle2">
    15. <div :style="previews.div">
    16. <img :src="previews.url" :style="previews.img">
    17. div>
    18. div>

    2.imgMoving 图片移动回调函数

    返回的参数内容

    1. {
    2. moving: true, // moving 是否在移动
    3. axis: {
    4. x1: 1, // 左上角
    5. x2: 1// 右上角
    6. y1: 1// 左下角
    7. y2: 1 // 右下角
    8. }
    9. }

    3. cropMoving 截图框移动回调函数

    返回的参数内容

    1. {
    2. moving: true, // moving 是否在移动
    3. axis: {
    4. x1: 1, // 左上角
    5. x2: 1// 右上角
    6. y1: 1// 左下角
    7. y2: 1 // 右下角
    8. }
    9. }

    2. 内置方法 和 属性

    通过 this.$refs.cropper 调用

    属性 说明
    this.$refs.cropper.cropW截图框宽度
    this.$refs.cropper.cropH截图框高度

     

     

     

     方法

    方法说明
    this.$refs.cropper.startCrop()开始截图
    this.$refs.cropper.stopCrop()停止截图
    this.$refs.cropper.clearCrop()清除截图
    this.$refs.cropper.changeScale()修改图片大小 正数为变大 负数变小
    this.$refs.cropper.getImgAxis()获取图片基于容器的坐标点
    this.$refs.cropper.getCropAxis()获取截图框基于容器的坐标点
    this.$refs.cropper.goAutoCrop自动生成截图框函数
    this.$refs.cropper.rotateRight()向右边旋转90度
    this.$refs.cropper.rotateLeft()向左边旋转90度

     

     

     

     

     

     

     

     

     

    获取截图内容 

      获取截图的 base64 数据

    1. this.$refs.cropper.getCropData(data => {
    2. // do something
    3. console.log(data)
    4. })

    获取截图的 blob 数据

    1. this.$refs.cropper.getCropBlob(data => {
    2. // do something
    3. console.log(data)
    4. })

    文档!!!

    名称功能默认值可选值
    img裁剪图片的地址url 地址base64blob
    outputSize裁剪生成图片的质量10.1 ~ 1
    outputType裁剪生成图片的格式jpg (jpg 需要传入jpeg)jpegpngwebp
    info裁剪框的大小信息truetruefalse
    canScale图片是否允许滚轮缩放truetruefalse
    autoCrop是否默认生成截图框falsetruefalse
    autoCropWidth默认生成截图框宽度容器的 80%0 ~ max
    autoCropHeight默认生成截图框高度容器的 80%0 ~ max
    fixed是否开启截图框宽高固定比例falsetruefalse
    fixedNumber截图框的宽高比例[1, 1][ 宽度 , 高度 ]
    full是否输出原图比例的截图falsetruefalse
    fixedBox固定截图框大小不允许改变false
    canMove上传图片是否可以移动truetruefalse
    canMoveBox截图框能否拖动truetruefalse
    original上传图片按照原始比例渲染falsetruefalse
    centerBox截图框是否被限制在图片里面falsetruefalse
    high是否按照设备的dpr 输出等比例图片truetruefalse
    infoTruetrue 为展示真实输出图片宽高 false 展示看到的截图框宽高falsetruefalse
    maxImgSize限制图片最大宽度和高度20000 ~ max
    enlarge图片根据截图框输出比例倍数10 ~ max(建议不要太大不然会卡死的呢)
    mode图片默认渲染方式containcontain , cover100px100% auto

  • 相关阅读:
    用百度云怎么重装电脑系统
    下拉菜单选择播放视频后如何更改video标签
    内联函数的探究
    2022“杭电杯”中国大学生算法设计超级联赛(7) 2022杭电多校第七场
    浮点数(小数)在计算机中如何用二进制存储?
    史上最全maven配置文件解析说明,从官网找pom.xml标签挨个解释
    详解Avast Driver Updater:电脑驱动更新工具的利器还是多余的软件?
    无声的世界,精神科用药并结合临床的一些分析及笔记(七)
    如何实现一个优秀的 HashTable 散列表?
    【前端】使用json-server报错
  • 原文地址:https://blog.csdn.net/weixin_43923808/article/details/126135104