0.2.5 • Published 4 years ago

vue-image-cutting v0.2.5

Weekly downloads
-
License
MIT
Repository
-
Last release
4 years ago

VueImageCutting

基于vue.js的图片裁剪组件

安装

npm i vue-image-cutting

使用

在 main.js 文件中引入插件并注册

// main.js
import VueImageCutting from 'vue-image-cutting'
import 'vue-image-cutting/lib/VueImageCutting.css'
Vue.use(VueImageCutting)

参数

参数说明类型是否必填默认值
picturePath需要裁剪的图片路径与文件File,Blob,String-
crossDomain是否通过img标签的crossorigin属性请求跨域资源Booleanfalse
buttonColor确认按钮的背景色String#0e9a00
backgroundColor背景色String#000000
iconColor旋转与复原按钮颜色String#ffffff
format裁剪完成后图片Base64的格式Stringpng
maskOpacity上层蒙版透明度String0.7
minZoom允许缩小的最小倍数Number0.5
maxZoom允许放大的最大倍数Number3

注意

1. 参数format传入的值将使用在canvas.toDataURL()中,如果传入的类型非“png”,但是返回的值以“data:image/png”开头,那么该传入的类型是不支持的。
2. maskOpacity传入的数字大小应在0至1之间。
3. minZoom不得小于等于0或大于5。
4. maxZoom不得小于等于1或大于5。
5. 受浏览器同源策略限制,如需使用跨域图片资源,会污染canvas导致不能使用canvas.toDataURL()方法进行截取,问题的解决方法是请将crossDomain的值设置为true(这样会将crossorigin="Anonymous"属性添加进img标签中),同时在被请求的资源文件中添加 'Access-Control-Allow-Origin’。

事件

事件名称说明回调参数
confirm点击确认按钮时触发,返回裁剪后的base64base64
cancel点击取消时触发-
rotate点击旋转时触发,得到当前旋转角度angle
restore点击复原时触发,得到当前旋转角度angle
loading图片加载结束后触发,成功LoadingStatus:true,失败LoadingStatus:falseLoadingStatus
touching图片移动与缩放时触发,得到当前图片的(旋转角度,缩放比,高度,宽度,x轴距离,Y轴距离)angle,scale,height,width,x,y

在项目中用使用 VueImageCutting

<template>
  <div>
    <Vue-imageCutting
        :picturePath="picturePathData" <!--必填-->
        :buttonColor="buttonColorData" <!--选填-->
        :backgroundColor="backgroundColorData" <!--选填-->
        :iconColor="iconColorData" <!--选填-->
        :format="formatData" <!--选填-->
        :crossDomain="crossDomainData" <!--选填-->
        :maskOpacity="maskOpacityData" <!--选填-->
        :minZoom="minZoomData" <!--选填-->
        :maxZoom="maxZoomData" <!--选填-->
        @confirm="confirmMethod" <!--选填-->
        @cancel="cancelMethod" <!--选填-->
        @rotate="rotateMethod" <!--选填-->
        @restore="restoreMethod" <!--选填-->
        @loading="loadingMethod" <!--选填-->
        @touching="touchingMethod" <!--选填-->
    />
  </div>
</template>
<script>
  export default {
    data () {
      return {
        maskOpacityData:0.7,
        formatData:"jpeg",
        minZoomData:0.5,
        crossDomainData:false,
        maxZoomData:3,
        iconColorData:"#ffffff",
        backgroundColorData:'#000000',
        buttonColorData:'#0e9a00',
        picturePathData:"xxx.jpg"
      }
    },
    methods:{
        touchingMethod(event){
            console.log(event)
        },
        restoreMethod(event){
            console.log(event)
        },
        rotateMethod(event){
            console.log(event)
        },
        cancelMethod(event){
            console.log(event)
        },
        loadingMethod(event){
            console.log(event)
        },
        confirmMethod(event){
            console.log(event)
        }
    }
  }
</script>
  • 注意:标签为 <Vue-imageCutting>

使用时请注意

1.本组件只适用于手机端,使用时组件自动铺满全屏,但也要尽量确保,组件的父级标签铺满全屏,否则有可能会影响组件获取手势x轴y轴坐标错误,导致不能正常使用。

2.组件内支持传入base64字符串,图片地址,或数据类型为File,Blob的图片文件。

3.使用组件时需要禁用页面的缩放功能。

问题反馈

资源所限并未进行各系统与多机型测试,感谢问题的反馈,我会尽力进行优化☺

请写明出现的问题(最好有录屏)与所用机型,谢谢。

  • 邮箱: 1033279566@qq.com

0.2.5

4 years ago

0.2.4

4 years ago

0.2.1

4 years ago

0.2.0

4 years ago

0.1.8

4 years ago

0.1.7

4 years ago

0.1.9

4 years ago

0.2.3

4 years ago

0.2.2

4 years ago

0.1.6

4 years ago

0.1.5

4 years ago

0.1.4

4 years ago

0.1.3

4 years ago

0.1.2

4 years ago

0.1.1

4 years ago

0.1.0

4 years ago