日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JS快速获取图片宽高的方法

發(fā)布時(shí)間:2024/1/17 javascript 77 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JS快速获取图片宽高的方法 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
JS快速獲取圖片寬高的方法

快速獲取圖片的寬高其實(shí)是為了預(yù)先做好排版樣式布局做準(zhǔn)備,通過快速獲取圖片寬高的方法比onload方法要節(jié)省很多時(shí)間,甚至一分鐘以上都有可能,并且這種方法適用主流瀏覽器包括IE低版本瀏覽器。

我們一步一步進(jìn)入這個(gè)過程。

一、簡陋的獲取圖片方式

// 圖片地址 后面加時(shí)間戳是為了避免緩存 var img_url = 'http://www.qttc.net/static/upload/2013/13643608813441.jpg?'+Date.parse(new Date());// 創(chuàng)建對象 var img = new Image();// 改變圖片的src img.src = img_url;// 打印 alert('width:'+img.width+',height:'+img.height);

?

執(zhí)行:

寬高都是0的這個(gè)結(jié)果很正常,因?yàn)閳D片的相關(guān)數(shù)據(jù)都沒有被加載前它的寬高默認(rèn)就是0

于是可以這么優(yōu)化!

二、onload后在打印

// 圖片地址 后面加時(shí)間戳是為了避免緩存 var img_url = 'http://www.qttc.net/static/upload/2013/13643608813441.jpg?'+Date.parse(new Date());// 創(chuàng)建對象 var img = new Image();// 改變圖片的src img.src = img_url;// 加載完成執(zhí)行 img.onload = function(){// 打印alert('width:'+img.width+',height:'+img.height); };

?

執(zhí)行:

通過onload就能獲取到圖片的寬高了。但onload大一點(diǎn)的圖通常都比較慢,不實(shí)用,但只要圖片被瀏覽器緩存,那么圖片加載幾乎就不用等待即可觸發(fā)onload,我們要的是占位符。所以有些人通過緩存獲取也可以這么寫。

三、通過complete與onload一起混合使用

為了測試緩存效果,注意以下測試圖片的url都不加時(shí)間戳

// 圖片地址 var img_url = 'http://www.qttc.net/static/upload/2013/13643608813441.jpg';// 創(chuàng)建對象 var img = new Image();// 改變圖片的src img.src = img_url;// 判斷是否有緩存 if(img.complete){// 打印alert('from:complete : width:'+img.width+',height:'+img.height); }else{// 加載完成執(zhí)行img.onload = function(){// 打印alert('from:onload : width:'+img.width+',height:'+img.height);}; }

?

第一次執(zhí)行,永遠(yuǎn)是onload觸發(fā)

你再刷新,幾乎都是緩存觸發(fā)了

從緩存里讀取圖片的寬高不用說,非常方便快捷,今天我們要解決的是沒有緩存而又快速的相比onload更快的方式去獲取圖片的寬高。我們常常知道有些圖片雖然沒有完全down下來,但是已經(jīng)先有占位符,然后一點(diǎn)一點(diǎn)的加載。既然有占位符那應(yīng)該是請求圖片資源服務(wù)器響應(yīng)后返回的。可服務(wù)器什么時(shí)候響應(yīng)并返回寬高的數(shù)據(jù)沒有觸發(fā)事件,比如onload事件。于是催生了第四種方法

四、通過定時(shí)循環(huán)檢測獲取

看看以下例子,為了避免從緩存里讀取數(shù)據(jù),每一次請求都帶時(shí)間戳:

// 圖片地址 var img_url = 'http://www.qttc.net/static/upload/2013/13643608813441.jpg?'+Date.parse(new Date());// 創(chuàng)建對象 var img = new Image();// 改變圖片的src img.src = img_url;// 定時(shí)執(zhí)行獲取寬高 var check = function(){document.body.innerHTML += '<div>from:<span style="color:red;">check</span> : width:'+img.width+',height:'+img.height+'</div>'; };var set = setInterval(check,40);// 加載完成獲取寬高 img.onload = function(){document.body.innerHTML += '<div>from:<span style="color:blue">onload</span> : width:'+img.width+',height:'+img.height+'</div>';// 取消定時(shí)獲取寬高 clearInterval(set); };

?

FireFox

IE7 8 9 10

Chrome

通過以上測試,我們發(fā)現(xiàn)定時(shí)檢測圖片寬高的方式要比onload快多了,打印的行數(shù)越多表示onload時(shí)間越長,40毫秒執(zhí)行一次,基本100毫秒內(nèi)就能獲取圖片的寬高,chrome甚至在第一次循環(huán)的時(shí)候就已經(jīng)獲得數(shù)據(jù)。從以上數(shù)據(jù)來分析,其實(shí)我們可以在定時(shí)函數(shù)里判斷只要圖片的寬高都大于0就表示已經(jīng)獲得正確的圖片寬高。我們把時(shí)間打上,來看看通過定時(shí)獲取寬高或者onload獲取寬高所需要多少時(shí)間。

代碼:

// 記錄當(dāng)前時(shí)間戳 var start_time = new Date().getTime();// 圖片地址 var img_url = 'http://b.zol-img.com.cn/desk/bizhi/image/2/2560x1600/1365477614755.jpg?'+start_time;// 創(chuàng)建對象 var img = new Image();// 改變圖片的src img.src = img_url;// 定時(shí)執(zhí)行獲取寬高 var check = function(){// 只要任何一方大于0// 表示已經(jīng)服務(wù)器已經(jīng)返回寬高if(img.width>0 || img.height>0){var diff = new Date().getTime() - start_time;document.body.innerHTML += '<div>from:<span style="color:red;">check</span> : width:'+img.width+',height:'+img.height+', time:'+diff+'ms</div>';clearInterval(set);} };var set = setInterval(check,40);// 加載完成獲取寬高 img.onload = function(){var diff = new Date().getTime() - start_time;document.body.innerHTML += '<div>from:<span style="color:blue">onload</span> : width:'+img.width+',height:'+img.height+', time:'+diff+'ms</div>'; };

?

FireFox:

IE

Chrome

這是一張2560 * 1600大小的圖片,各瀏覽器執(zhí)行結(jié)果都能看到通過快速獲取圖片大小的方法幾乎都在200毫秒以內(nèi),而onload至少五秒以上,這差別之大說明快速獲取圖片寬高非常實(shí)用。

?

posted on 2015-06-25 10:45 jsCoder_洋洋 閱讀(...) 評論(...) 編輯 收藏

轉(zhuǎn)載于:https://www.cnblogs.com/zhuyang/p/4599404.html

總結(jié)

以上是生活随笔為你收集整理的JS快速获取图片宽高的方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美大尺度视频 | 在线一区二区三区四区 | 欧美v日本| av男人的天堂av | 亚洲图片视频在线 | 无码播放一区二区三区 | 天堂视频免费在线观看 | 8x8x永久免费视频 | av香港经典三级级 在线 | 最近中文字幕av | 亚洲一区在线看 | 一级性生活大片 | 亚洲视频国产精品 | 99久久久无码国产精品 | 狠狠艹狠狠干 | 久久性av | 国产一区二区波多野结衣 | 精品亚洲国产成av人片传媒 | 国产不卡毛片 | 97成人在线视频 | 无码精品在线视频 | 特极毛片 | 制服 丝袜 综合 日韩 欧美 | 欧美成人免费 | 亚洲少妇xxx | av网站国产| 国产20页| 人日人视频 | 日本女人一级片 | 麻豆剧场 | 日在线视频| 国产黄色录相 | 久久四虎| 饥渴少妇伦色诱公 | 国产浪潮av | 在线日韩精品视频 | 黑人日批视频 | 丁香一区二区 | 免费国产a级片 | 麻豆网站免费观看 | 日本一区二区不卡在线 | 激情xxx | 国产精品亚洲专区无码牛牛 | 亚洲免费精品 | 欧美美女黄色 | 亚洲av片一区二区三区 | 香蕉视频免费在线播放 | 四虎一区二区 | 亚州一区二区 | 久久一区二区三 | 欧美精品少妇 | 自拍偷拍亚洲欧洲 | 五月天综合色 | 久久99久久99精品中文字幕 | 亚洲论理| 日日噜噜噜噜人人爽亚洲精品 | 亚洲一区二区三区久久久 | 三上悠亚 在线观看 | 久久93 | 久久高清免费视频 | 日批免费在线观看 | 日韩激情视频 | 无码少妇精品一区二区免费动态 | 91视频一区 | 成人免费黄色网 | 91肉色超薄丝袜脚交一区二区 | 亚洲爱视频 | av片在线免费看 | 图片一区二区 | 亚洲精品在线免费看 | 丁香一区二区三区 | 黄色一级片视频 | 免费无码又爽又黄又刺激网站 | 欧美成年人网站 | 中国老太婆性视频 | 亚洲 高清 成人 动漫 | 天堂va蜜桃一区二区三区漫画版 | 91精品国产欧美一区二区 | 色噜噜狠狠成人中文 | 国产黄色片免费在线观看 | 日本一级三级三级三级 | 午夜神马福利 | 美女网站免费视频 | 国产精品欧美大片 | 国产对白视频 | 日本精品二区 | 欧美天堂在线观看 | 蜜臀av免费一区二区三区水牛 | 自拍偷自拍亚洲精品播放 | 中文字幕无线码一区 | 久久麻豆精品 | 免费av网址在线 | 日本人体一区 | 小蝌蚪视频色 | 女同av在线播放 | 捆绑裸体绳奴bdsm亚洲 | 亚洲欧洲另类 | 一级性爱视频 | 日韩综合一区 |