2014-05-22 127 views
0

我嘗試使用此代碼將圖像二進制轉換爲base64,但仍不成功。Base64 - 無效編碼

我得到了無效的base64字符串。使用此工具驗證。

http://www.freeformatter.com/base64-encoder.html

var img = document.getElementById('image'); 

function getBase64Image(img) { 
var canvas = document.createElement("canvas"); 
canvas.width = img.width; 
canvas.height = img.height; 
var ctx = canvas.getContext("2d"); 
ctx.drawImage(img, 0, 0); 
var dataURL = canvas.toDataURL("image/png"); 
return dataURL.replace(/^data:image\/(png|jpg);base64,/, ""); 
} 

這些解決方案沒有幫助我的人。我希望能很快得到答案。

結果 iVBORw0KGgoAAAANSUhEUgAAASwAAACWCAYAAABkW7XSAAADKUlEQVR4Ae3QMQEAAADCoPVPbQhfiEBhwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg4B0Yv9QAAQ + mdHoAAAAASUVORK5CYII =

感謝。

+0

什麼是「不成功」 - 它是錯誤的,給一個無效的base64字符串,或其他? –

+0

無效的base64字符串。 –

+0

我不認爲你可以刪除數據:圖像部分。嘗試在替換之前返回dataURL。 –

回答

0

我得到了答案。

var img = document.getElementById('image'); 

var oReq = new XMLHttpRequest(); 
oReq.open("GET", img, true); 
oReq.responseType = "arraybuffer"; 

oReq.onload = function (oEvent) { 
    var arrayBuffer = oReq.response; // Note: not oReq.responseText 
    if (arrayBuffer) { 
     var x = img.split('.'); 
     var ext = x[x.length - 1]; 
     var b64img = _arrayBufferToBase64(arrayBuffer); 
     $('<img />').attr('src', 'data:image/' + ext + ';base64,' + b64img).appendTo($('body')); 
    } 
}; 

oReq.send(null); 

function _arrayBufferToBase64(buffer) { 
    var binary = '' 
    var bytes = new Uint8Array(buffer) 
    var len = bytes.byteLength; 
    for (var i = 0; i < len; i++) { 
     binary += String.fromCharCode(bytes[i]) 
    } 
    return window.btoa(binary); 
}