簡體   English   中英

在JavaScript中將Image 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$1 ").replace(/ +$/, "").split(" ")));
}

使用Function.prototypeapply方法,通過將十六進制字符串轉換為數組並將其作為參數數組提供給String.fromCharCode()來生成最大調用堆棧超出錯誤。

在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);
}

可能提供一些想法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM