美文网首页
vue-cropper实现图片裁剪功能

vue-cropper实现图片裁剪功能

作者: MISS_3ca2 | 来源:发表于2021-01-13 14:14 被阅读0次
    npm install vue-simple-uploader --save  //安装
    //main.js里面使用
    import VueCropper from 'vue-cropper' 
    
    Vue.use(VueCropper)
    <template>
        <div>
          <img :src="image" alt="">
             <input type="file" @change="changeUpload($event)">
          <!-- vueCropper 剪裁图片实现-->
        <el-dialog title="图片剪裁" :visible.sync="dialogVisible" append-to-body>
          <div class="cropper-content">
            <div class="cropper" style="text-align:center">
            <vueCropper
                ref="cropper"
                :img="option.img"
                :outputSize="option.size"
                :outputType="option.outputType"
                :info="true"
                :full="option.full"
                :canMove="option.canMove"
                :canMoveBox="option.canMoveBox"
                :original="option.original"
                :autoCrop="option.autoCrop"
                :fixed="option.fixed"
                :fixedNumber="option.fixedNumber"
                :centerBox="option.centerBox"
                :infoTrue="option.infoTrue"
                :fixedBox="option.fixedBox"
              ></vueCropper>
            </div>
          </div>
          <div slot="footer" class="dialog-footer">
            <el-button @click="dialogVisible = false">取 消</el-button>
            <el-button type="primary" @click="finish" :loading="loading">确认</el-button>
          </div>
        </el-dialog>
        </div>
    </template>
    
    <style lang="less">
    .cropper-content {
        .cropper {
            width: auto;
            height: 300px;
        }
    }
    </style>
    
    <script>
    // import { client } from '@/utils/alioss'
    export default {
      data() {
        return {
          image:'',
          dialogVisible: false,
          // 裁剪组件的基础配置option
          option: {
            img: '', // 裁剪图片的地址
            info: true, // 裁剪框的大小信息
            outputSize: 0.8, // 裁剪生成图片的质量
            outputType: 'jpeg', // 裁剪生成图片的格式
            canScale: false, // 图片是否允许滚轮缩放
            autoCrop: true, // 是否默认生成截图框
            // autoCropWidth: 300, // 默认生成截图框宽度
            // autoCropHeight: 200, // 默认生成截图框高度
            fixedBox: false, // 固定截图框大小 不允许改变
            fixed: false, // 是否开启截图框宽高固定比例
            fixedNumber: [7, 5], // 截图框的宽高比例
            full: true, // 是否输出原图比例的截图
            canMoveBox: false, // 截图框能否拖动
            original: false, // 上传图片按照原始比例渲染
            centerBox: false, // 截图框是否被限制在图片里面
            infoTrue: true, // true 为展示真实输出图片宽高 false 展示看到的截图框宽高
            canMove: true //上传图片是否可以移动
          },
          picsList: [],  //页面显示的数组
          // 防止重复提交
          loading: false
        }
      },
      methods: {
        // 上传按钮   限制图片大小
        changeUpload(e) {
           console.log(e.target.files[0])
            var file = e.target.files[0]
            console.log(file)
            var reader = new FileReader()
            var that = this
            reader.readAsDataURL(file)
            reader.onload = function(e) {
                that.option.img = this.result
              that.dialogVisible = true
            }
        },
        // 点击裁剪,这一步是可以拿到处理后的地址
        finish() {
          this.$refs.cropper.getCropData((data) => {
            console.log(data)
            this.image = data
            this.dialogVisible = false
          })
        }
      }
    }
    </script>
    
    
    

    相关文章

      网友评论

          本文标题:vue-cropper实现图片裁剪功能

          本文链接:https://www.haomeiwen.com/subject/urrvaktx.html