JavaScript获取图片的原始尺寸

页面里的img元素,想要获取它的原始尺寸,以宽度为例可能首先想到的就是width,如下


1

2

3

4

5

<img src="
http://img11.360buyimg.com/da/g14/M07/01/0E/rBEhVlNhh8wIAAAAAADmFBLo1twAAM26gOmCgYAAOYs716.jpg">

<script>

var img = document.getElementsByTagName(‘img‘)[0]

var width = getWH(img, ‘width‘) // 690

</script>

这里使用的getWH方法是之前文章里提到的。这时候获取的宽度和图片的原始尺寸是一样的。

如果给img加上了width属性,这种方式就不行了,比如图片实际宽度是690,设置了width为400,这时按上面的方式获取则返回400


1

2

3

4

5

<img width="400" src="
http://img11.360buyimg.com/da/g14/M07/01/0E/rBEhVlNhh8wIAAAAAADmFBLo1twAAM26gOmCgYAAOYs716.jpg">

<script>

var img = document.getElementsByTagName(‘img‘)[0]

var width = getWH(img, ‘width‘) // 400

</script>

很明显,400不是图片的原始宽度。

有一种方式可以获取到,直接创建一个新img对象,然后把旧img的src赋值给新的,这时候获取新img的宽度即可


1

2

3

4

5

6

7

8

9

10

11

<img width="400" src="
http://img11.360buyimg.com/da/g14/M07/01/0E/rBEhVlNhh8wIAAAAAADmFBLo1twAAM26gOmCgYAAOYs716.jpg">

<script>

function getNaturalWidth(img) {

var image = new Image()

image.src = img.src

var naturalWidth = image.width

return naturalWidth

}

var img = document.getElementsByTagName(‘img‘)[0]

getNaturalWidth(img) // 690

</script>

需要注意的是,这里新创建的image是不需要添加的DOM文档里的。

HTML5提供了一个新属性naturalWidth/naturalHeight可以直接获取图片的原始宽高。这两个属性在Firefox/Chrome/Safari/Opera及IE9里已经实现。改造下获取图片尺寸的方法。


1

2

3

4

5

6

7

8

9

10

11

12

13

14

function getImgNaturalDimensions(img, callback) {

var nWidth, nHeight

if (img.naturalWidth) { // 现代浏览器

nWidth = img.naturalWidth

nHeight = img.naturalHeight

} else { // IE6/7/8

var imgae = new Image()

image.src = img.src

image.onload = function() {

callback(image.width, image.height)

}

}

return [nWidth, nHeight]

}

注意IE6/7/8的处理,创建了一个新的img,仅设置其src,这时需要让图片完全载入后才可以获取其宽高。因此这里是异步的,可以传一个回调,回调里把原始的宽高作为参数传入。

相关:

http://www.cnblogs.com/snandy/p/3704938.html

http://www.sitepoint.com/html5-responsive-design-image-dimensions/

http://www.w3.org/TR/2011/WD-html5-author-20110705/the-img-element.html#the-img-element

时间: 2024-10-25 21:20:12

JavaScript获取图片的原始尺寸的相关文章

如何用JavaScript在浏览器端获取图片的原始尺寸大小?

var img = $("#img_id"); // Get my img elem var pic_real_width, pic_real_height; $("<img/>") // Make in memory copy of image to avoid css issues .attr("src", $(img).attr("src")) .load(function() { pic_real_widt

jq获取图片的原始尺寸,自适应布局

原理: each()遍历,width().height()获取宽高, load() 注意: 由于页面加载完了,但图片不一定加载完了,所以直接通过 $("img").width(),$("img").height() 是无法稳定获取到img的准确尺寸,或为0,或偶尔为0: 解决方法: load(),元素加载完了之后执行: 代码如下: <!DOCTYPE html> <html lang="en"> <head>

JS获取图片的原始尺寸

一.html5 中新的naturalWidth和naturalHeight属性 在HTML 5中,新增加了两个用来判断图片的宽度和高度的属性,分别为naturalWidth 和 naturalHeight属性, 例子如下: var rw = myimage.naturalWidth; // 真实图片宽度 var rh = myimage.naturalHeight; //真实图片高度 前提是:必须在图片完全下载到客户端浏览器才能判断,目前在ie 9,Firefox, Chrome, Safari

java 获取图片大小(尺寸)

1,获取本地图片大小(尺寸) File picture=new File(strSrc);BufferedImage sourceImg=ImageIO.read(new FileInputStream(picture)); sourceImg.getWidth(); sourceImg.getHeight(); 2,获取网络图片大小(尺寸) BufferedImage sourceImg=ImageIO.read(new URL(strSrc).openStream()); sourceImg

[转]js动态获取图片长宽尺寸

http://blog.phpdr.net/js-get-image-size.html lightbox类效果为了让图片居中显示而使用预加载,需要等待完全加载完毕才能显示,体验不佳(如filick相册的全屏效果).javascript无法获取img文件头数据,真的是这样吗?本文通过一个巧妙的方法让javascript获取它. 这是大部分人使用预加载获取图片大小的例子: 01 var imgLoad = function (url, callback) { 02     var img = ne

转载:js动态获取图片长宽尺寸(兼容所有浏览器,速度极快)

转自:http://blog.phpdr.net/js-get-image-size.html lightbox类效果为了让图片居中显示而使用预加载,需要等待完全加载完毕才能显示,体验不佳(如filick相册的全屏效果).javascript无法获取img文件头数据,真的是这样吗?本文通过一个巧妙的方法让javascript获取它. 这是大部分人使用预加载获取图片大小的例子: 01 var imgLoad = function (url, callback) { 02     var img =

使用JavaScript获取图片的真实尺寸大小

Webkit 内核的浏览器在加载完图片之后才能获取宽和高.所以,我建议使用onload时间来获取图片的宽和高 1 var img = $("img")[0]; // Get my img elem 2 var pic_real_width, pic_real_height; 3 $("<img/>") // Make in memory copy of image to avoid css issues 4 .attr("src",

获取图片的原始高度

var _w = parseInt($(window).width());//获取浏览器的宽度$(".new_mess_c img").each(function(i){var img = $(this);var realWidth;//真实的宽度var realHeight;//真实的高度//这里做下说明,$("<img/>")这里是创建一个临时的img标签,类似js创建一个new Image()对象!$("<img/>"

Javascript获取页面、屏幕尺寸大小参数

Javascript获取获取屏幕.浏览器窗口 ,浏览器,网页高度.宽度的大小网页可见区域宽:document.body.clientWidth 网页可见区域高:document.body.clientHeight 网页可见区域宽:document.body.offsetWidth (包括边线的宽) 网页可见区域高:document.body.offsetHeight (包括边线的宽) 网页正文全文宽:document.body.scrollWidth 网页正文全文高:document.body.