2017-11-10 17 views
0

キャンバスに画像を1つアップロードしました。ここにはDEMOがあります。今、問題は、私が写真をアップロードして、別の写真をアップロードしたいとき、前の写真がまだ残っているということです。キャンバスに画像をアップロード

これは私のコードです:

JS:

var canvas = document.getElementById('main'); 
var ctx = canvas.getContext('2d'); 

var fileInput = document.getElementById('fileInputTest'); 
fileInput.addEventListener('change', imageLoader, false); 

function imageLoader() { 
    var reader = new FileReader(); 
    reader.onload = function(event) { 
     img = new Image(); 
     img.onload = function() { 

      var MAX_WIDTH = 150; 
      var MAX_HEIGHT = 150; 
      var width = img.width; 
      var height = img.height; 

      if (width > height) { 
       if (width > MAX_WIDTH) { 
        height *= MAX_WIDTH/width; 
        width = MAX_WIDTH; 
       } 
      } else { 
       if (height > MAX_HEIGHT) { 
        width *= MAX_HEIGHT/height; 
        height = MAX_HEIGHT; 
       } 
      } 

      ctx.drawImage(img, 0, 0, width, height); 
     } 
     img.src = reader.result; 
    } 
    reader.readAsDataURL(fileInput.files[0]); 
} 

HTML:

<input type="file" id="fileInputTest" /> 
<canvas id="main" width="150" height="150"></canvas> 

はCSS:

#main { 
    border: 2px dotted black; 
    border-radius: 5px position: absolute; 
} 

JSFIDDLE DEMO

+1

[クリア](https://developer.mozilla.org/en/USA/docs/Web/API/CanvasRenderingContext2D/clearRect)あなたのキャンバス...しかし、キャンバスを使用する理由もわかりませんが、あなたは絶対にFileReaderを必要としません... – Kaiido

+0

私はそれをカスタマイズするために使用しています。キャンバスに写真をアップロードすると、Tシャツの中央に表示されます。それはclearRectで動作していません。 –

+0

https://jsfiddle.net/wvnmxj0q/1/が動作します。私は気分がいいので、不要なFileReaderはありません。https://jsfiddle.net/wvnmxj0q/2/ – Kaiido

答えて

0

あなたがコンテキストであなたのイメージを描画する前にこれだけを追加します。

ctx.clearRect(0, 0, canvas.width, canvas.height); 
ctx.drawImage(img, 0, 0, width, height); 

イメージを描画する前に、キャンバス領域を消去してください。

関連する問題