Czy można w jakiś sposób przekonwertować tablicę bajtów na dane obrazu bez użycia kanwy?Konwertuj tablicę bajtową na dane obrazu bez płótna
Używam obecnie czegoś takiego, jednak myślę, że można to zrobić bez płótna, czy też się mylę?
var canvas = document.getElementsByTagName("canvas")[0];
var ctx = canvas.getContext("2d");
var byteArray = [
255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, // red
0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, // green
0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255 // blue
];
var imageData = ctx.getImageData(0, 0, 10, 3);
for(var i = 0; i < byteArray.length; i+=4){
imageData.data[i] = byteArray[i];
imageData.data[i+1] = byteArray[i + 1];
imageData.data[i+2] = byteArray[i + 2];
imageData.data[i+3] = byteArray[i + 3];
}
ctx.putImageData(imageData, 0, 0);
http://jsfiddle.net/ARTsinn/swnqS/
Aktualizacja
Już próbowali przekształcić go w produkt base64-uri, ale bez powodzenia:
'data:image/png;base64,' + btoa(String.fromCharCode.apply(this, byteArray));
Aktualizacja 2
Aby podzielić pytanie od problemu
Samo płótno czy to nie raczej z faktu, że oldIE (i jeszcze) nie obsługują. ... i biblioteki takie jak excanvas lub flashcanvas wydaje się nieco zbyt nadęty dla tego przypadku użycia ...
Jedynym sposobem, jak sądzę, byłoby przejście przez serwer. –
Możesz potencjalnie przekonwertować dane obrazu na base64. na przykład –
@LeeTaylor Yeh, już wiem o base64-URI, ale nie o tym, jak konwertować tablicę bajtów do kodu b64 gotowego do przechowywania danych. – yckart