Преобразование байтового массива в данные изображения без холста
Можно ли как-то преобразовать байтовый массив в данные изображения без использования canvas?
Я использую в настоящее время что-то вроде этого, однако я думаю, что это может быть сделано без холста, или я не прав?
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/
Обновить
Я уже пытался преобразовать его в base64-URI, но безуспешно:
'data:image/png;base64,' + btoa(String.fromCharCode.apply(this, byteArray));
Обновление 2
Чтобы отделить вопрос от проблемы
Сам холст это не так, скорее тот факт, что oldIE (и еще) не поддерживают его. ... И библиотеки вроде excanvas или flashcanvas кажутся слишком раздутыми для этого варианта использования ...