6

キャンバスを使用せずにバイト配列を画像データに変換することは何とか可能ですか?

私は現在このようなものを使用していますが、キャンバスがなくてもできると思いますか、それとも間違っていますか?

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 などのライブラリは、このユースケースには少し肥大化しすぎているようです...

4

2 に答える 2

0

canvas を使いたくない理由はありますか? これは本当にキャンバスの目的です。画像データを取得したら、それをどうしますか。ブラウザでレンダリングしますか?サーバーに送信しますか? ユーザーにダウンロードしますか?問題がキャンバスを画面に表示したくないということだけである場合は、非表示のキャンバスを作成して作業を行うことができます。

于 2013-04-22T03:30:44.600 に答える