首頁  >  文章  >  web前端  >  js如何取得圖片寬高

js如何取得圖片寬高

coldplay.xixi
coldplay.xixi原創
2021-03-02 14:36:5216266瀏覽

js獲取圖片寬高的方法:1、onload後在打印;2、通過complete與onload一起混合使用;3、通過定時循環檢測獲取,代碼為【from:check : width:' img .width ',height:' img.heig】。

js如何取得圖片寬高

本教學操作環境:windows7系統、javascript1.8.5版,DELL G3電腦。

js取得圖片寬高的方法:

一、簡陋的取得圖片方式

// 图片地址 后面加时间戳是为了避免缓存
var img_url = ‘upload/2013/13643608813441.jpg?'+Date.parse(new Date());
  
// 创建对象
var img = new Image();
  
// 改变图片的src
img.src = img_url;
  
// 打印
alert('width:'+img.width+',height:'+img.height);

 結果如下:

js如何取得圖片寬高

寬高都是0的這個結果很正常,因為圖片的相關資料都沒有被載入前它的寬高預設就是0 於是可以這麼優化!

二、onload後在印

// 图片地址 后面加时间戳是为了避免缓存
var img_url = 'upload/2013/13643608813441.jpg?'+Date.parse(new Date());
  
// 创建对象
var img = new Image();
  
// 改变图片的src
img.src = img_url;
  
// 加载完成执行
img.onload = function(){
 // 打印
 alert('width:'+img.width+',height:'+img.height);
};

 結果如下

js如何取得圖片寬高

透過onload就能取得圖片的寬高了。但onload大一點的圖通常都比較慢,不實用,但只要圖片被瀏覽器緩存,那麼圖片加載幾乎就不用等待即可觸發onload,我們要的是佔位符。所以有些人透過快取獲取也可以這麼寫。

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

為了測試快取效果,注意以下測試圖片的url都不加時間戳

// 图片地址
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觸發

js如何取得圖片寬高

你再刷新,幾乎都是快取觸發了

js如何取得圖片寬高

從快取裡讀取圖片的寬高不用說,非常方便快捷,今天我們要解決的是沒有快取而又快速的相比onload更快的方式去獲取圖片的寬高。我們常常知道有些圖片雖然沒有完全down下來,但是已經先有佔位符,然後一點一點的加載。既然有佔位符那應該是請求圖片資源伺服器回應後回傳的。可伺服器什麼時候會回應並傳回寬高的資料沒有觸發事件,例如onload事件。於是催生了第四種方法

四、透過定時循環檢測取得

#看看以下例子,為了避免從快取讀取數據,每一次請求都帶時間戳記:

// 图片地址
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);
};

推薦學習:《JavaScript影片教學

以上是js如何取得圖片寬高的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn