У меня есть 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) до canvas
элемента с помощью javascript
в
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()' в событие onload img – Kaiido
. Я не буду его обертывать, потому что я понятия не имею, что OP хочет с этим делать. И да, это правда в drawImage, я хотел показать все возможности этого метода. – Shomz
Тогда я не уверен, что это «самое простое исправление», поскольку вы показываете OP, что 'drawImage()' даже имеет свойство обрезки. Я думаю, что «самый легкий» в его случае - тот, который делает именно то, что он хочет, и только это. – Kaiido