首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在JavaScript中将图像十六进制转换为base64

在JavaScript中将图像十六进制转换为base64
EN

Stack Overflow用户
提问于 2018-10-03 07:20:09
回答 1查看 1.5K关注 0票数 1

我正在寻找一种方法来转换十六进制图像(例如,十六进制格式的jpg )回base64,以便在网页中显示图像。

我一直在使用下面的代码来处理较小的图像,但对于具有最大调用堆栈超过错误的较大图像,它会失败。

下面的src是十六进制格式的图像源。

代码语言:javascript
复制
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(" ")));
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-03 08:45:55

通过将十六进制字符串转换为数组,并使用Function.prototype中的apply方法将其作为参数数组提供给String.fromCharCode(),生成了超过最大调用堆栈的错误。

how many arguments can be passed in JavaScript function calls有实际的限制,因此该方法可以在小文件上工作,在大文件上失败。

重构代码将是必要的。作为未经测试的基本解决方案

代码语言:javascript
复制
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);
}

可能会提供一些想法。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52617680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档