在图片标签中,如果我们不提供width和height属性,则在检索图像的宽度和高度时,我们什么也得不到。我使用canvas元素加载图像并按比例缩放。为了做到这一点,我必须得到实际的图像大小。是否可以在html 5中执行此操作?
答案 0 :(得分:9)
HTMLImageElement
有两个属性,naturalWidth
和naturalHeight
。使用那些。
如:
var img = new Image();
img.addEventListener('load', function() {
// once the image is loaded:
var width = img.naturalWidth; // this will be 300
var height = img.naturalHeight; // this will be 400
someContext.drawImage(img, 0, 0, width, height);
}, false);
img.src = 'http://placekitten.com/300/400'; // grab a 300x400 image from placekitten
在定义事件监听器之后设置源是明智的,请参阅Phrogz对此的探索:Should setting an image src to data URL be available immediately?
答案 1 :(得分:3)
在加载图像之前无法检索宽度/高度。
尝试类似:
// create new Image or get it right from DOM,
// var img = document.getElementById("myImage");
var img = new Image();
img.onload = function() {
// this.width contains image width
// this.height contains image height
}
img.src = "image.png";
如果在脚本执行之前加载了图像,无论如何都不会触发onload。最后,您可以在html <img src="test.jpg" onload="something()">
答案 2 :(得分:1)
如果我理解正确,您可以使用getComputedStyle
方法。
var object = document.getElementById(el);
var computedHeight = document.defaultView.getComputedStyle(object, "").getPropertyValue("width");
答案 3 :(得分:0)
不完全明白你的问题。
但您可以使用javascript来获取图片的宽度和高度。
然后将其传递给
/ Five arguments: the element, destination (x,y) coordinates, and destination
// width and height (if you want to resize the source image).
context.drawImage(img_elem, dx, dy, dw, dh);
在画布上绘制图像时。
或检查这是否有帮助