2009-04-19 48 views

答えて

3

canvas.getImageData()および.putImageData()を使用してピクセルに直接アクセスできます。 canvas.toDataURL()を使用してイメージをデータURLにシリアル化して、サーバーにポストすることもできます。

これは新しいブラウザでのみ機能します。

14

getImageDataメソッド以外にも、canvas.toDataURL()を使用してデータURLエンコードPNGを取得できます。文字列にシリアル化する必要がある場合は、生データを手動で文字列に変換する必要がありません。デシリアライズするには、イメージを作成し、srcをデータURLに設定してキャンバスに描画します。

[(olliejによって提案された)非同期ロードを考慮して編集。]

function serialize(canvas) { 
    return canvas.toDataURL(); 
} 

function deserialize(data, canvas) { 
    var img = new Image(); 
    img.onload = function() { 
     canvas.width = img.width; 
     canvas.height = img.height; 
     canvas.getContext("2d").drawImage(img, 0, 0); 
    }; 

    img.src = data; 
} 

私の記憶が正しければ、一部の古いサファリのバージョン、および多分OperaはtoDataURLをサポートしていませんでしたが、最近のバージョン行う。

+2

技術的にイメージは同期的にロードされることは保証されていないので、イメージ・ロード・ハンドラの作業の残りの部分を実際に実行する必要があります。 – olliej

+0

良い点。私はそれを修正します。 –

関連する問題