キャンバスを使用せずにバイト配列をイメージデータに変換することはどうしてですか?バイト配列をキャンバスなしのイメージデータに変換
私は現在、このようなものを使用していますが、キャンバスなしでもできますか、間違っていますか?
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は(および他の)それをサポートしていないという事実はむしろ、キャンバス自体はそれをでない問題
から質問を分割するには。
interface ImageData { readonly attribute unsigned long width; readonly attribute unsigned long height; readonly attribute Uint8ClampedArray data; };
(参照:...そしてexcanvasまたは flashcanvasのようなライブラリは、このユースケースのために少しあまりにも肥大化したようだ...
これ以外の唯一の方法は、サーバーを経由することです。 –
画像データをbase64に変換する可能性があります。例えば –
@LeeTaylor Yeh、私はすでにbase64-URIについては知っていますが、バイト配列をイメージデータ対応のb64コードに変換する方法は知りません。 – yckart