Gathering detailed insights and metrics for vue-cropper
Gathering detailed insights and metrics for vue-cropper
Gathering detailed insights and metrics for vue-cropper
Gathering detailed insights and metrics for vue-cropper
npm install vue-cropper
Module System
Min. Node Version
Typescript Support
Node Version
NPM Version
4,341 Stars
332 Commits
705 Forks
35 Watching
3 Branches
23 Contributors
Updated on 26 Nov 2024
Minified
Minified + Gzipped
Vue (90.24%)
HTML (7.92%)
JavaScript (0.82%)
TypeScript (0.82%)
Shell (0.19%)
Cumulative downloads
Total Downloads
Last day
-13.3%
2,969
Compared to previous day
Last week
-8.2%
16,831
Compared to previous week
Last month
18.4%
77,210
Compared to previous month
Last year
-10.9%
1,077,652
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 |
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 | 是否开启截图框宽高固定比例 | false | true , false |
fixedNumber | 截图框的宽高比例, 开启fixed 生效 | [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 |
limitMinSize | 裁剪框限制最小区域 | 10 | Number, Array, String |
fillColor | 导出时背景颜色填充 | 空 | #ffffff , white |
@realTime
实时预览事件@imgMoving
图片移动回调函数@cropMoving
截图框移动回调函数@imgLoad
图片加载的回调, 返回结果 success
, error
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.
Reason
0 commit(s) and 14 issue activity found in the last 90 days -- score normalized to 10
Reason
no binaries found in the repo
Reason
0 existing vulnerabilities detected
Reason
license file detected
Details
Reason
Found 3/14 approved changesets -- score normalized to 2
Reason
no effort to earn an OpenSSF best practices badge detected
Reason
project is not fuzzed
Details
Reason
security policy file not detected
Details
Reason
SAST tool is not run on all commits -- score normalized to 0
Details
Score
Last Scanned on 2024-11-18
The Open Source Security Foundation is a cross-industry collaboration to improve the security of open source software (OSS). The Scorecard provides security health metrics for open source projects.
Learn More