在 JavaScript 中将图像 Hex 转换为 base64
Converting Image Hex to base64 in JavaScript
我正在寻找一种将十六进制图像(例如十六进制格式的 jpg)转换回 base64 以便在网页中显示图像的方法。
我一直在将下面的代码用于较小的图像,但对于较大的图像却失败,并出现最大调用堆栈超出错误。
src 下面是十六进制格式的图片来源。
test.img = new Image();
test.img.src = "data:image/jpg; base64," + hexToBase64(src);
function hexToBase64(str) {
return btoa(String.fromCharCode.apply(null, str.replace(/\r|\n/g, "").replace(/([\da-fA-F]{2}) ?/g, "0x ").replace(/ +$/, "").split(" ")));
}
通过使用 Function.prototype
中的 apply
方法将十六进制字符串转换为数组并将其作为参数数组提供给 String.fromCharCode()
来生成超出最大调用堆栈错误。
how many arguments can be passed in JavaScript function calls 有实际限制,因此该方法可以用于小文件,但不能用于大文件。
重构代码将是必要的。作为未经测试的基本解决方案
function hexToBase64(str) {
var bString = "";
for( var i = 0; i < str.length; i +=2) {
bString += String.fromCharCode( parseInt( str.substr( i, 2), 16));
}
return btoa(bString);
}
可能会提供一些想法。
我正在寻找一种将十六进制图像(例如十六进制格式的 jpg)转换回 base64 以便在网页中显示图像的方法。
我一直在将下面的代码用于较小的图像,但对于较大的图像却失败,并出现最大调用堆栈超出错误。
src 下面是十六进制格式的图片来源。
test.img = new Image();
test.img.src = "data:image/jpg; base64," + hexToBase64(src);
function hexToBase64(str) {
return btoa(String.fromCharCode.apply(null, str.replace(/\r|\n/g, "").replace(/([\da-fA-F]{2}) ?/g, "0x ").replace(/ +$/, "").split(" ")));
}
通过使用 Function.prototype
中的 apply
方法将十六进制字符串转换为数组并将其作为参数数组提供给 String.fromCharCode()
来生成超出最大调用堆栈错误。
how many arguments can be passed in JavaScript function calls 有实际限制,因此该方法可以用于小文件,但不能用于大文件。
重构代码将是必要的。作为未经测试的基本解决方案
function hexToBase64(str) {
var bString = "";
for( var i = 0; i < str.length; i +=2) {
bString += String.fromCharCode( parseInt( str.substr( i, 2), 16));
}
return btoa(bString);
}
可能会提供一些想法。