我有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