2017-05-14 2 views
0

1)私はbase64イメージデータを持っています。このイメージはキャンバス内にイメージとして描画するために使用されました。後で私はbase64としてそれを取り戻し、別のサービスに送り、画像(記憶装置の中に画像ファイルとして保存)を作成しましたキャンバスから間違ったピクセルデータを取得する

2)別のページでは、このイメージをbase64として読み込み、キャンバス内に戻します。すべてのレンダリング部分がよく見え、完全に機能しています。

しかし、Uint8ClampedArrayは(1)と(2)が異なっていました。それとも、これが期待される行動ですか?ここに私のコードです:

/** first part **/ 
var img = new Image(); 
img.src = 'data:image/jpeg;base64,' + data.result; 
// wait for image finish load 
// then draw image into canvas 
img.onload = function() { 
    // draw cover image into canvas 
    // ctx is just canvas context 
    ctx.drawImage(img, 0, 0); 
    // clampedArray is just a normal variable 
    clampedArray = ctx.getImageData(0, 0, canvas.height, canvas.width); 
    console.log(clampedArray.data); //<----------------------- (1) 
    var base64Image = secret.toDataURL('image/jpeg'); 
    // sending base64Image to another services 
} 

/** second part/another page **/ 
var img = new Image(); 
img.src = 'data:image/jpeg;base64,' + data.result; 
img.onload = function() { 
    ctx.drawImage(img, 0, 0);    
    clampedArray = ctx.getImageData(0, 0, coverAfter.height,coverAfter.width); 
    console.log(clampedArray.data); //<----------------------- (2) 
} 

data.resultリターン同じbase64で、しかしとき、両方のI console.log(1)及び(2)、私は別の結果を得た(Uint8ClampedArray

+0

@Kaiidoありがとう、私はそれを見て、それは今のように唯一の方法のように思える –

答えて

0

私は2つを推測していますbase64文字列はではなく、と等しいです。 secret.toDataURL('image/jpeg')を実行すると元のJPEG画像が再エンコードされます。(most likely)は画像を少し変更します。したがって、base64Imageは元のdata.resultと同じではありません。

+0

全く異なるようです。 @ kaiidoの答えを見る必要があると思う –

関連する問題