vue--剪裁图片vueCropper

小菜鸟来更新   记录vueCropper的使用

(1)小插曲 fileReader

使用图片剪裁之前要上传文件,上传使用的input file,

然后查看控制台,上传文件的文本的数据格式是ArrayBuffer,如下图,

百度了一下解释是这样的ArrayBuffer表示二进制数据的原始缓冲区,该缓冲区用于存储各种类型化数组的数据。无法直接读取或写入, 需要通过其他方式来读写。 但可根据需要将其传递到类型化数组或 DataView 对象来解释原始缓冲区。

使用FileReader获得上传的文件后对文件进行处理时

// reader.readAsArrayBuffer(file)  // 将内容转化为ArrayBuffer格式,此时需将ArrayBuffer转化为blob后可获得图片预览图片

//reader.readAsDataURL(file)      //将内容转化为base64格式,可直接预览图片

// reader.readAsBinaryString(file)  

// reader.readAsText(file) // 将 Blob 或者 File 对象转根据特殊的编码格式转化为内容(字符串形式)

上传图片代码如下:

 

    // 上传
    uploadFn (e) {
      var file = e.target.files[0]
      console.info(file)
      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) => {
        // event.target.result 文件里的文本
        let data = e.target.result
        // console.info(data)
        if (typeof data === 'object') {
          // ArrayBuffer的话需转换格式
          data = window.URL.createObjectURL(new Blob([data]))
          // console.info(data)
        }
        this.option.img = data
      }
      reader.readAsArrayBuffer(file) // 将内容转化为ArrayBuffer格式
      // reader.readAsDataURL(file) // 将内容转化为base64格式
      // reader.readAsBinaryString(file)
      // reader.readAsText(file) // 将 Blob 或者 File 对象转根据特殊的编码格式转化为内容(字符串形式)
    },

(2)剪裁组件 

<vueCropper
                ref="cropper"
                :img="option.img"
                :outputSize="option.size"
                :outputType="option.outputType"
                :canScale = "option.canScale"
                :autoCrop = "option.autoCrop"
                :autoCropWidth = "option.autoCropWidth"
                :autoCropHeight = "option.autoCropHeight"
                :high = "option.high"
                @realTime="realTime"
              ></vueCropper>

(3)实时预览,旋转,保存

试试预览的需按照官方文档写,最好加一个父级盒子

              <div class="imgView">
                <!-- <img :src="imgCropper" alt=""> -->
                <div class="show-preview" :style="{'width': previews.w + 'px', 'height': previews.h + 'px',  'overflow': 'hidden',
                    'margin': '5px'}">
                  <div :style="previews.div">
                    <img :src="option.img" :style="previews.img">
                  </div>
                </div>
              </div>

写的有点乱 先存下,主要的点(1)对图片格式的处理,base64 、ArrayBuffer、blob

(2)预览 的布局使用官方结构,多看api

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值