width
またはheight
属性がimg
HTML のタグに設定されている場合、単純な drawImage() 呼び出しが調整されないのはなぜですか?
HTML
<!--Try adding width="200" to the img tag below.
You'll see that the original image (left on
the output) is resized accordingly, but the
drawImage rendering is not. If you console.log
imgs.width, it's set to 200, but the
result is unchanged.
-->
<img src="https://i.imgur.com/mbXJe0f.png" width="200">
JavaScript
imgs = document.getElementsByTagName('img')[0];
//I set EVERYTHING I know about to the proper values, just to see what happens
var canvas = document.createElement('canvas');
document.body.appendChild(canvas);
var context = canvas.getContext('2d');
style = '';
style += 'width:'+imgs.width+'px;';
style += 'height:'+imgs.height+'px;';
canvas.setAttribute('style',style);
canvas.width = imgs.width;
canvas.height = imgs.height;
console.log(imgs.width,imgs.height);
var testImage = new Image();
testImage.src = imgs.src;
testImage.width = imgs.width;
testImage.height = imgs.height;
testImage.onload = function() {
square = 100;
context.drawImage(this,150,70,square,square,0,0,square,square);
}
そのデモでwidth
、soleimg
タグに属性を設定すると、左側の画像は変更されますが (元の画像)、右側の画像は変更されません (drawImage レンダリング)。
元の src に設定testImage.src
していることがわかりますが、開発者コンソール ログを開くと調整される幅と高さも設定しています。
どうしてこれなの?それに応じて調整されるようにそのコードを調整できますか?
ここで予想される結果は、drawImage render が画像のより大きな領域を表示することです。サイズ変更ではないことは簡単にわかります。「無限」記号は、同じであるべき場所でサイズが異なります。