VUE Base64編碼圖片展現與轉換圖片

圖片的 base64 編碼就是能夠將一副圖片數據編碼成一串字符串,使用該字符串代替圖像地址,使用 base64 傳輸圖片文件能夠節省一個 http 請求,圖片的 base64 編碼能夠算是前端優化的一環前端

VUE Base64編碼圖片展現

<img :src="icon">

export default {
   data() {
      icon: 'data:image/png;base64,,XXXXX...',
   }
}

圖片在線轉換Base64:http://imgbase64.duoshitong.com/ <br>chrome

Base64編碼轉換圖片

base64ImgtoFile(dataurl, filename = 'file') {
  let arr = dataurl.split(',')
  let mime = arr[0].match(/:(.*?);/)[1]
  let suffix = mime.split('/')[1]
  let bstr = atob(arr[1])
  let n = bstr.length
  let u8arr = new Uint8Array(n)
  while (n--) {
    u8arr[n] = bstr.charCodeAt(n)
  }
  return new File([u8arr], `${filename}.${suffix}`, {
    type: mime
  })
},

// base64編碼的圖片
var base64Img = 'data:image/png;base64,XXXXX...';
//轉換圖片文件
var imgFile = this.base64ImgtoFile(base64Img);

<br>瀏覽器

文件轉換base64編碼

<el-upload
         class="avatar-uploader"
         action=""
         ref="uploadAvatar"
         :show-file-list="false"
         :auto-upload="false"
         :on-change="changeFile">
     <img v-if="imageUrl" :src="imageUrl" class="uploadAvatar">
     <i v-else class="el-icon-plus avatar-uploader-icon"></i>
 </el-upload>

data() {
  return {
	imageUrl: '',
	imageBaseUrl: '',
  }
}

 /**
 * 文件框改變事件
 * @param file
 * @param fileList
 */
changeFile(file, fileList) {
    const isJPGORPNG = (file.raw.type === 'image/jpeg' || file.raw.type === 'image/png');
    const isLt1M = file.size / 1024 / 1024 < 1;

    if (!isJPGORPNG) {
        this.$message.info('上傳頭像圖片只能是 JPG 或 PNG 格式!');
        return;
    }
    if (!isLt1M) {
        this.$message.info('上傳頭像圖片大小不能超過 1MB!');
        return;
    }

    var This = this;
    var reader = new FileReader();
    reader.readAsDataURL(file.raw);
    reader.onload = function(e){
        this.result; //base64編碼
        This.imageBaseUrl = this.result;
        This.imageUrl = this.result;
    }
},

<br>前端優化

更便捷的圖片轉化Base64編碼方式

利用 Chrome 瀏覽器,在 chrome 下新建一個窗口,而後把要轉化的圖片直接拖入瀏覽器,打開控制檯,點 Source,以下圖所示,點擊圖片,右側就會顯示該圖片的 base64 編碼 在這裏插入圖片描述優化

相關文章
相關標籤/搜索