Gathering detailed insights and metrics for maitao-vue-cropper
Gathering detailed insights and metrics for maitao-vue-cropper
Gathering detailed insights and metrics for maitao-vue-cropper
Gathering detailed insights and metrics for maitao-vue-cropper
npm install maitao-vue-cropper
Typescript
Module System
Node Version
NPM Version
74.9
Supply Chain
99
Quality
75.8
Maintenance
100
Vulnerability
100
License
Vue (89.72%)
HTML (8.29%)
TypeScript (0.93%)
JavaScript (0.86%)
Shell (0.2%)
Love this project? Help keep it running — sponsor us today! 🚀
Total Downloads
1,440
Last Day
3
Last Week
9
Last Month
44
Last Year
519
MIT License
288 Commits
3 Branches
1 Contributors
Updated on Feb 09, 2023
Minified
Minified + Gzipped
Latest Version
1.0.10-7
Package Id
maitao-vue-cropper@1.0.10-7
Unpacked Size
208.78 kB
Size
54.23 kB
File Count
21
NPM Version
6.14.4
Node Version
13.14.0
Published on
Mar 20, 2023
Cumulative downloads
Total Downloads
Last Day
0%
3
Compared to previous day
Last Week
-10%
9
Compared to previous week
Last Month
15.8%
44
Compared to previous month
Last Year
1.4%
519
Compared to previous year
一个优雅的图片裁剪插件
[ 查看演示 Demo ]
[ README_english ]
[ 更新日志 ]
1# npm 安装 2npm install vue-cropper
1# yarn 安装 2yarn add vue-cropper
如果你没有使用 npm
服务器渲染 nuxt
解决方案 设置为 ssr: false
1module.exports = { 2 ... 3 build: { 4 vendor: [ 5 'vue-cropper 6 ... 7 plugins: [ 8 { src: '~/plugins/vue-cropper', ssr: false } 9 ] 10 } 11}
Vue 3
组件内引入
1npm install vue-cropper@next 2import 'vue-cropper/dist/index.css' 3import { VueCropper } from "vue-cropper";
Vue3
全局引入
1import VueCropper from 'vue-cropper'; 2import 'vue-cropper/dist/index.css' 3 4const app = createApp(App) 5app.use(VueCropper) 6app.mount('#app')
Vue3 CDN
方式引入
1<style type="text/css" src="https://cdn.jsdelivr.net/npm/vue-cropper@1.0.2/dist/index.css"></style>
1<script src="https://cdn.jsdelivr.net/npm/vue@3.2.1/dist/vue.global.js"></script> 2<script src="https://cdn.jsdelivr.net/npm/vue-cropper@1.0.2/dist/vue-cropper.umd.js"></script> 3const app = Vue.createApp({...}); 4app.component('vue-cropper', window['vue-cropper'].VueCropper);
Vue2
组件内引入
1import { VueCropper } from 'vue-cropper' 2components: { 3 VueCropper 4}
Vue2
全局引入
1import VueCropper from 'vue-cropper' 2Vue.use(VueCropper)
Vue2 CDN
方式引入
1<script src="//cdn.jsdelivr.net/npm/vue-cropper@0.4.9/dist/index.js"></script>
1Vue.use(window['vue-cropper'].default)
nuxt
引入方式
1if(process.browser) { 2 vueCropper = require('vue-cropper') 3 Vue.use(vueCropper.default) 4}
重要! 需要关掉本地的 mock 服务, 不然图片转化会报错 重要! 需要使用外层容器包裹并设置宽高
1<vueCropper 2 ref="cropper" 3 :img="option.img" 4 :outputSize="option.size" 5 :outputType="option.outputType" 6></vueCropper>
目前还不知道什么原因项目里面开启
mock
会导致 file 报错,建议使用时关掉mock
名称 | 功能 | 默认值 | 可选值 |
---|---|---|---|
img | 裁剪图片的地址 | 空 | url 地址 , base64 , blob |
outputSize | 裁剪生成图片的质量 | 1 | 0.1 ~ 1 |
img | 裁剪图片的地址 | 空 | url 地址 , base64 , blob |
outputSize | 裁剪生成图片的质量 | 1 | 0.1 ~ 1 |
outputType | 裁剪生成图片的格式 | jpg (jpg 需要传入jpeg) | jpeg , png , webp |
info | 裁剪框的大小信息 | true | true , false |
canScale | 图片是否允许滚轮缩放 | true | true , false |
autoCrop | 是否默认生成截图框 | false | true , false |
autoCropWidth | 默认生成截图框宽度 | 容器的 80% | 0 ~ max |
autoCropHeight | 默认生成截图框高度 | 容器的 80% | 0 ~ max |
fixed | 是否开启截图框宽高固定比例 | true | true , false |
fixedNumber | 截图框的宽高比例 | [1, 1] | [ 宽度 , 高度 ] |
full | 是否输出原图比例的截图 | false | true , false |
fixedBox | 固定截图框大小 | 不允许改变 | false |
canMove | 上传图片是否可以移动 | true | true , false |
canMoveBox | 截图框能否拖动 | true | true , false |
original | 上传图片按照原始比例渲染 | false | true , false |
centerBox | 截图框是否被限制在图片里面 | false | true , false |
high | 是否按照设备的dpr 输出等比例图片 | true | true , false |
infoTrue | true 为展示真实输出图片宽高 false 展示看到的截图框宽高 | false | true , false |
maxImgSize | 限制图片最大宽度和高度 | 2000 | 0 ~ max |
enlarge | 图片根据截图框输出比例倍数 | 1 | 0 ~ max(建议不要太大不然会卡死的呢) |
mode | 图片默认渲染方式 | contain | contain , cover , 100px , 100% auto |
@realTime
实时预览事件@imgMoving
图片移动回调函数@cropMoving
截图框移动回调函数@imgLoad
图片加载的回调, 返回结果 success
, error
@changeCropSizeEnd
修改截图框大小结束的回调函数1realTime(data) { 2 var previews = data 3 var h = 0.5 4 var w = 0.2 5 6 this.previewStyle1 = { 7 width: previews.w + "px", 8 height: previews.h + "px", 9 overflow: "hidden", 10 margin: "0", 11 zoom: h 12 } 13 14 this.previewStyle2 = { 15 width: previews.w + "px", 16 height: previews.h + "px", 17 overflow: "hidden", 18 margin: "0", 19 zoom: w 20 } 21 22 // 固定为 100 宽度 23 this.previewStyle3 = { 24 width: previews.w + "px", 25 height: previews.h + "px", 26 overflow: "hidden", 27 margin: "0", 28 zoom: 100 / preview.w 29 } 30 31 // 固定为 100 高度 32 this.previewStyle4 = { 33 width: previews.w + "px", 34 height: previews.h + "px", 35 overflow: "hidden", 36 margin: "0", 37 zoom: 100 / preview.h 38 } 39 this.previews = data 40}
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 14<p>迷你大小</p> 15<div :style="previewStyle2"> 16 <div :style="previews.div"> 17 <img :src="previews.url" :style="previews.img"> 18 </div> 19</div>
返回的参数内容
1{ 2 moving: true, // moving 是否在移动 3 axis: { 4 x1: 1, // 左上角 5 x2: 1,// 右上角 6 y1: 1,// 左下角 7 y2: 1 // 右下角 8 } 9 }
返回的参数内容
1{ 2 moving: true, // moving 是否在移动 3 axis: { 4 x1: 1, // 左上角 5 x2: 1,// 右上角 6 y1: 1,// 左下角 7 y2: 1 // 右下角 8 } 9 }
通过 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 数据
1this.$refs.cropper.getCropData(data => {
2 // do something
3 console.log(data)
4})
获取截图的 blob 数据
1this.$refs.cropper.getCropBlob(data => {
2 // do something
3 console.log(data)
4})
有什么意见,或者 bug,或者想一起开发 vue-cropper
, 或者想一起开发其他插件
No vulnerabilities found.
No security vulnerabilities found.