Convertir una matriz de bytes a datos de imagen sin lienzo

¿Es posible de alguna manera convertir una matriz de bytes a datos de imagen sin usar lienzo?

Actualmente uso algo como esto, sin embargo, creo que se puede hacer sin lienzo, ¿o me equivoco?

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/

Actualizar

Ya intenté convertirlo en una base64-uri, pero no tuve éxito:

'data:image/png;base64,' + btoa(String.fromCharCode.apply(this, byteArray));

Actualización 2

Para dividir la pregunta del problema.

El lienzo en sí no lo es, más bien el hecho de que oldIE (y si no) no lo admite. ... Y bibliotecas como excanvas o flashcanvas parecen un poco demasiado hinchadas para este caso de uso ...

Respuestas a la pregunta(2)

Su respuesta a la pregunta