Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I get natural dimensions of an image using javascript or jquery?

I have this code so far:

var img = document.getElementById('draggable'); var width = img.clientWidth; var height = img.clientHeight; 

However this gets me the html attributes - css styles. I want to get dimensions of the actual image resource, of the file.

I need this because upon uploading an image, it's width gets set to 0px and I have no idea why or where this is happening. To prevent it I want to get the actual dimension and reset them. Is this possible?

Edit: Even when I try to get naturalWidth I get 0 as a result. I've added a picture. The weird thing is that it only happens when I upload new files and upon refresh it's working as it should.

http://oi39.tinypic.com/3582xq9.jpg

like image 730
user1848605 Avatar asked May 02 '13 16:05

user1848605


People also ask

How can get image width and height in jQuery?

width(); alert(imageWidth); var imageHeight = Imgsize. height();

How do you get the image width and height using JS?

Answer: Use the JavaScript clientWidth property You can simply use the JavaScript clientWidth property to get the current width and height of an image. This property will round the value to an integer.

How do I make an image an original size in HTML?

You can preserve the aspect ratio by specifying only width and setting height to auto using CSS property. This will render a 400px wide image. The height is adjusted accordingly to preserve the aspect ratio of the original image.


1 Answers

You could use naturalWidth and naturalHeight, these properties contain the actual, non-modified width and height of the image, but you have to wait until the image has loaded to get them

var img = document.getElementById('draggable');  img.onload = function() {     var width  = img.naturalWidth;     var height = img.naturalHeight; } 

This is only supported from IE9 and up, if you have to support older browser you could create a new image, set it's source to the same image, and if you don't modify the size of the image, it will return the images natural size, as that would be the default when no other size is given

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

like image 52
adeneo Avatar answered Sep 24 '22 03:09

adeneo