有没有一种不使用画布就可以将字节数组转换为图像数据的方法?
我目前使用的是类似于这样的方法,但我认为可以不用画布来完成,或者我错了吗?
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);
点击此处可查看相关IT技术内容。
更新
我已经尝试将其转换为base64-uri,但没有成功:
'data:image/png;base64,' + btoa(String.fromCharCode.apply(this, byteArray));
更新2
问题实际上不在于canvas本身,而在于旧版IE(以及其他浏览器)不支持它。......对于这种情况,excanvas或flashcanvas等库似乎有点过于臃肿。