【发布时间】:2019-03-08 03:09:36
【问题描述】:
我正在寻找一种将十六进制图像(例如十六进制格式的 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$1 ").replace(/ +$/, "").split(" ")));
}
【问题讨论】:
-
它是十六进制字符串格式有什么原因吗?当您大部分时间只使用 Blob、File 或 ArrayBuffer (TypedArray) 对象时,这似乎很奇怪。但是“超出最大调用堆栈”消息往往来自失控的递归函数,我在这里没有看到。
-
这正是我得到的。 src 的格式是一个带有各种字符标记的标题,然后是数据。例如,标题的前 4 个字符是 3238,转换为 28。28 是接下来要处理的字符数,其中包含文件名,在本例中为 66696e6973686c6f6f702e706e67。如果有更好的方法来处理这个,我会很感激学习它。格式正是我得到的
标签: javascript image base64 hex converters