關於前端使用JavaScript獲取base64圖片大小的方法

base64原理

Base64編碼要求把3個8位字節(38=24)轉化爲4個6位的字節(46=24),以後在6位的前面補兩個0,造成8位一個字節的形式。 若是剩下的字符不足3個字節,則用0填充,輸出字符使用’=’,所以編碼後輸出的文本末尾可能會出現1或2個’=’後端

如何獲取base64圖片大小

經過base64編碼原理咱們知道,base64的圖片字符流中的每8個字符就有兩個是用0補充,並且字符流的末尾還可能存在‘=’號,咱們能夠經過這個原理計算圖片的文件流大小。編碼

getImgByteSize(data) {
        if (data.graphicContents) { // 獲取base64圖片byte大小
            const equalIndex = data.graphicContents.indexOf('=');  // 獲取=號下標
            if (equalIndex > 0) {
                const str = data.graphicContents.substring(0, equalIndex); // 去除=號
                const strLength = str.length;
                const fileLength = strLength - (strLength / 8) * 2; // 真實的圖片byte大小
                data.size = Math.floor(fileLength); // 向下取整
            } else {
                const strLength = data.graphicContents.length;
                const fileLength = strLength - (strLength / 8) * 2;
                data.size = Math.floor(fileLength); // 向下取整
            }
        } else {
            data.size = null;
        }
    }

data.graphicContents是後端獲取的base64圖片的字符串。code

把圖片轉化成base64

getBase64(file: File) {
    const reader = new FileReader();
    reader.addEventListener('load', () => {
      const base64Str = reader.result.toString();
      const base64Url = base64Str.split('base64,')[1]; //獲取上傳圖片的base64碼
    });
    reader.readAsDataURL(file);
}
相關文章
相關標籤/搜索