我有html
页面内容转换HTML img元素帆布
<div class="span12">
<img id="myImg" src="myImage.png" style="max-width: 100%; height: auto;" />
</div>
其中myImage.png
实际尺寸1600 * 900
。图像的尺寸为796 * 448
(保持纵横比的拉伸)。
我想给img
元素转换(大小为796 * 448)使用javascript
一个canvas
元素
function convertImgToCanvas(){
var myImgElement = document.getElementById("myImg");
var myCanvasElement = document.createElement("canvas");
myCanvasElement.width = myImgElement.width;
myCanvasElement.height = myImgElement.height;
var context = myCanvasElement.getContext('2d');
context.drawImage(myImgElement,0,0);
}
产生的画布的大小1600 * 900
,不796 * 448
。我期待画布的大小为796 * 448
。
如果我设置高度和画布的宽度
myCanvasElement.width = '796px';
myCanvasElement.height = '448px';
画布的大小成为796 * 448
,但图像被裁剪
是否有任何解决方案来创建一个canvas
从img
元件,具有恰好与img
元素相同的宽度和高度,而不裁剪图像?
如果1600和900是图像宽度/高度,那么只是'context.drawImage(myImgElement,0,0,796,448);'将具有相同的确切效果。如果796和448是相对维度,那么'var rect = imageElement.getBoundingClientRect(); context.drawImage(myImgElement,0,0,rect.width,rect.height);'是OP需要的。无论如何,你应该把'convertImgToCanvas()'调用包装到img的onload事件中 – Kaiido
我不会把它包装到任何东西中,因为我不知道OP要做什么。是的,关于drawImage的确如此,我想展示该方法的所有可能性。 – Shomz
然后我不确定这是“最简单的修复”,因为你显示OP,'drawImage()'甚至具有修剪属性。我认为他的案例中“最简单”就是那个完全按照他的意愿去做的人,而且只是这个。 – Kaiido