Как получить естественные размеры изображения с помощью javascript или jquery?
У меня есть этот код:
var img = document.getElementById('draggable');
var width = img.clientWidth;
var height = img.clientHeight;
Однако это дает мне атрибуты html - стили css. Я хочу получить размеры фактического ресурса изображения, файла.
Мне нужно это, потому что при загрузке изображения ширина становится равной 0px, и я не знаю, почему и где это происходит. Чтобы предотвратить его, я хочу получить фактическое измерение и reset их. Возможно ли это?
Изменить: даже когда я пытаюсь получить naturalWidth, я получаю 0. Я добавил фотографию. Странно то, что это происходит только тогда, когда я загружаю новые файлы, а после обновления он работает так, как должен.
http://oi39.tinypic.com/3582xq9.jpg
Ответы
Ответ 1
Вы можете использовать naturalWidth
и naturalHeight
, эти свойства содержат фактическую, не измененную ширину и высоту изображения, но вам нужно подождать, пока изображение не загрузится, чтобы получить их
var img = document.getElementById('draggable');
img.onload = function() {
var width = img.naturalWidth;
var height = img.naturalHeight;
}
Это поддерживается только с IE9 и выше, если вам нужно поддерживать старый браузер, вы можете создать новое изображение, установить его источник на одно и то же изображение, и если вы не измените размер изображения, он вернется естественный размер изображения, так как это будет по умолчанию, если не задан другой размер
var img = document.getElementById('draggable'),
new_img = new Image();
new_img.onload = function() {
var width = this.width,
heigth = this.height;
}
new_img.src = img.src;
FIDDLE
Ответ 2
Есть img.naturalHeight
и img.naturalWidth
, которые дают вам ширину и высоту самого изображения, а не элемент DOM.
Ответ 3
Вы можете использовать следующую функцию, которую я сделал.
Функция
function getImageDimentions(imageNode) {
var source = imageNode.src;
var imgClone = document.createElement("img");
imgClone.src = source;
return {width: imgClone.width, height: imgClone.height}
}
HTML:
<img id="myimage" src="foo.png">
используйте его так
var image = document.getElementById("myimage"); // get the image element
var dimentions = getImageDimentions(image); // get the dimentions
alert("width: " + dimentions.width + ", height: " + dimentions.height); // give the user a visible alert of the dimentions