2017-05-04 204 views
-3

在我的Ionic2/Angular2應用程序中,我需要將圖像作爲字節數組傳遞給C#中的restful API。有什麼辦法可以實現嗎?在打字稿中將圖像轉換爲字節數組

+0

簡短的回答得到一個字節組是「是」。對於更詳細的版本,我們需要更多的細節,也是迄今爲止您嘗試的。 – Henry

+0

什麼樣的細節?我只需要將圖像轉換爲字節數組,我正在尋找一種方法來實現這一點。 –

+0

您使用,加載一個圖像,並使用'toDataURL()'得到一個base64編碼圖像 – Dylan

回答

2

您可以使用Canvas API

function toDataURL(src: string, format: string): ng.IPromise<string> { 

    var defer = $q.defer(); 

    var img = new Image(); 
    img.crossOrigin = 'Anonymous'; 
    img.onload =() => { 
     var canvas = document.createElement('CANVAS'); 
     var ctx = canvas.getContext('2d'); 
     canvas.height = img.height; 
     canvas.width = img.width; 
     ctx.drawImage(img, 0, 0); 

     var dataURL = canvas.toDataURL(format); 
     defer.resolve(dataURL); 
    }; 

    img.onerror =() => { 
     defer.reject("Failed to load image"); 
    }; 

    return defer.promise; 
} 

使用ATOB獲得字節組圖像轉換爲base64。 注意:您將不得不刪除前綴的數據吧:; BASE64,

var byteCharacters = atob(b64Data); 
var byteNumbers = new Array(byteCharacters.length); 
for (var i = 0; i < byteCharacters.length; i++) { 
    byteNumbers[i] = byteCharacters.charCodeAt(i); 
} 
var byteArray = new Uint8Array(byteNumbers); 

您可以從base64string在C#

var byteArray = Convert.FromBase64String(base64StringFromClient); 
+0

我必須得到客戶端的字節數組,我不能改變任何後端。 –

+0

@ChrisK。這隻在客戶端。 –

相關問題