js如何获取图片宽高


当前第2页 返回上一页

为了测试缓存效果,注意以下测试图片的url都不加时间戳

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

// 图片地址

var img_url = 'upload/2013/13643608813441.jpg';

   

// 创建对象

var img = new Image();

   

// 改变图片的src

img.src = img_url;

   

// 判断是否有缓存

if(img.complete){

 // 打印

 alert('from:complete : width:'+img.width+',height:'+img.height);

}else{

 // 加载完成执行

 img.onload = function(){

 // 打印

 alert('from:onload : width:'+img.width+',height:'+img.height);

 };

}

第一次执行,永远是onload触发

f514022ecad54ce8e4f085db5216c96.png

你再刷新,几乎都是缓存触发了

1c0070c5623a81706f981b32648c37d.png

从缓存里读取图片的宽高不用说,非常方便快捷,今天我们要解决的是没有缓存而又快速的相比onload更快的方式去获取图片的宽高。我们常常知道有些图片虽然没有完全down下来,但是已经先有占位符,然后一点一点的加载。既然有占位符那应该是请求图片资源服务器响应后返回的。可服务器什么时候响应并返回宽高的数据没有触发事件,比如onload事件。于是催生了第四种方法

四、通过定时循环检测获取

看看以下例子,为了避免从缓存里读取数据,每一次请求都带时间戳:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

// 图片地址

var img_url = 'upload/2013/13643608813441.jpg?'+Date.parse(new Date());

   

// 创建对象

var img = new Image();

   

// 改变图片的src

img.src = img_url;

   

// 定时执行获取宽高

var check = function(){

 document.body.innerHTML += '

from:check : width:'+img.width+',height:'+img.height+'

';

};

   

var set = setInterval(check,40);

   

// 加载完成获取宽高

img.onload = function(){

 document.body.innerHTML += '

from:onload : width:'+img.width+',height:'+img.height+'

';

   

 // 取消定时获取宽高

 clearInterval(set);

};

相关教程推荐:CSS视频教程

以上就是js如何获取图片宽高的详细内容,更多文章请关注木庄网络博客

返回前面的内容

相关阅读 >>

node.js爬取豆瓣数据实例

javascript关于数组的方法有哪些不同之处?

js是什么编程语言?

javascript如何定义字符串

怎么判断是否加载了jquery?

使用new操作符实例化一个对象的具体步骤是什么

vue是做什么的

augularjs基础入门与实践

如何使用css设计出一个表单页面(附示例)

怎样用 tensorflow.js 创建基本的 ai 模型?

更多相关阅读请进入《javascript》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...