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圖片的字符串。
把圖片轉化成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);
}