【发布时间】:2019-03-26 13:28:23
【问题描述】:
function saveIMG(image) {
var startIndex = image.indexOf("base64,") + 7;
var b64 = image.substr(startIndex, image.indexOf(">") - startIndex - 2);
var byteCharacters = atob(b64);
var byteNumbers = new Array(byteCharacters.length);
for (var i = 0; i < byteCharacters.length; i++) {
byteNumbers[i] = byteCharacters.charCodeAt(i);
}
var byteArray = new Uint8Array(byteNumbers);
var data = new Blob([byteArray], {type: 'image/jpeg'});
return "<img src='" + window.URL.createObjectURL(data) + "' width='150'/>";
}
我想使用此代码将 base64 图像编码为使用 URL 的图像。但是,在它使用 atob 的那一行会抛出这个错误:
Uncaught DOMException: Failed to execute 'atob' on 'Window': 要解码的字符串编码不正确。
我只能假设它与 base64 有关,或者它可能无法使用 atob 转换 base64 图像。无论如何,这是从子字符串中获取的 base64 的开头:
/9j/4AAQSkZJRgABAQEASABIAAD/7RTuUGhvdG9zaG9wIDMuMAA4QklNBAQAAAAAAA8cAVoAAxslRxwCAAACAAAAOEJJTQQlAAAAAAAQzc/6fajHvgkFcHaurwXDTjhCSU0EOgAAAAAA5QAAABAAAAABAAAAAAALcHJpbnRPdXRwdXQAAAAFAAAAAFBzdFNib29sAQAAAABJbnRlZW51bQAAAABJbnRlAAAAAENscm0AAAAPcHJpbnRTaXh0ZWVuQml0Ym9vbAAA
【问题讨论】:
-
你从哪里得到这个
image.indexOf('>')?
标签: javascript arrays base64 blob