vue的图片上传、裁剪,显示的vue-cropper

在这里插入图片描述

安装

npm install vue-cropper

使用

main.js里面

上传按钮

<div class="search-icon" >
            <label for="inputId" >
              上传
            </label>
            <input
              style="display: none"
              id="inputId"
              ref="input"
              type="file"
              accept="image/gif, image/jpeg, image/jpg, image/png, image/svg"
              @change="handleFileChange"
            />
 </div>

在这里插入图片描述
弹出层,放剪裁图片的cropper

    <div class="uploadBigImg" v-show="dialogVisible">
      <div class="operation-box">
        <div class="cropper-info">
          <div id="croppermain">
            <vueCropper
              ref="cropper"
              :img="option.img"
              :outputSize="option.size"
              :outputType="option.outputType"
              :info="option.info"
              :full="option.full"
              :canMove="option.canMove"
              :canMoveBox="option.canMoveBox"
              :original="option.original"
              :autoCrop="option.autoCrop"
              :fixedBox="option.fixedBox"
              :centerBox="option.centerBox"
              :enlarge="option.enlarge"
              :mode="option.mode"
              :background="option.background"
              @realTime="realTime"
            ></vueCropper>
          </div>
        </div>
      </div>
    </div>
    //预览
	<div class="preview-box">
              <div class="preview" :style="previews.div">
                <img :src="previews.url" :style="previews.img" />
              </div>
      </div>

option是剪裁插件的属性配置,具体更多含义查看官网介绍

<script>
export default {
  data() {
    return {
      dialogVisible: false,
      // 裁剪组件的基础配置option
       option: {
        img: "", // 裁剪图片的地址
        size: 1, // 剪切后的图片质量(0.1-1)
        full: false, // 输出原图比例截图 props名full
        outputType: "png", // 裁剪生成额图片的格式
        canMove: false, // 能否拖动图片
        original: false, // 上传图片是否显示原始宽高
        canMoveBox: true, // 能否拖动截图框
        autoCrop: true, // 是否默认生成截图框
        centerBox: true, //截图框是否被限制在图片里面
        // mode: "cover",
        background: false,
        enlarge: 0.1,
        fixedBox: false // 截图框固定大小
      },
      previews:{}
    }
  },
  methods: {
    handleFileChange(e){
    var _this = this;
      // 上传图片
      this.file = e.target.files[0];
      _this.fileName = this.file.name;
      if (!/\.(gif|jpg|jpeg|png|bmp|GIF|JPG|PNG)$/.test(e.target.value)) {
        alert("图片类型必须是.gif,jpeg,jpg,png,bmp中的一种");
        return false;
      }
      var reader = new FileReader();
      reader.onload = e => {
        let data;
        if (typeof e.target.result === "object") {
          // 把Array Buffer转化为blob 如果是base64不需要
          data = window.URL.createObjectURL(new Blob([e.target.result]));
        } else {
          data = e.target.result;
        }
        _this.option.img = data;
      };
      // 转化为base64
      // reader.readAsDataURL(file)
      // 转化为blob
      reader.readAsArrayBuffer(this.file);
   },
    realTime(data) {
	    this.previews = data;
    }
}
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值