簡單寫一下圖片上傳獲取寬高的方法


最近,我負責的后台系統有一個圖片上傳校驗圖片比例的需求,以前沒有做過這種需求,便查了一些資料總結了一下圖片上傳獲取寬高的方法。
想要獲取圖片的寬高首先要知道圖片的url;一般圖片上傳UI組件或自己封裝的組件都會獲取到圖片的url,知道url就好辦了,上代碼。

var img_url = URL;//圖片URL地址
var imgObj = new Image();//創建對象
imgObj.src = img_url;//改變圖片地址
console.log(imgObj.width + "" + imgObj.height)

what?為啥輸出是00;其實我也遇到過這個問題;原因是在輸出之前圖片還沒有加載完,只要在圖片加載完后就可以獲取到了;

var img_url = URL;//圖片URL地址
var imgObj = new Image();//創建對象
imgObj.src = img_url;//改變圖片地址
imgObj.onload = function(){
    console.log(imgObj.width + "" + imgObj.height)
}

好了,這下就可以輸出圖片的寬高了;用這種方法效率不是很高,也可以用計時器循環檢測來實現,只要圖片寬和高任意一項大於0,就可獲取到圖片的寬和高;

// 記錄當前時間戳
var start_time = new Date().getTime()
// 圖片地址 后面加時間戳是為了避免緩存
var img_url = 'url'+start_time
// 創建對象
var imgObj = new Image()
// 改變圖片的src
imgObj.src = img_url
// 定時執行獲取寬高
var check = function(){
 // 只要任何一方大於0
 // 表示已經服務器已經返回寬高
    if (imgObj.width>0 || imgObj.height>0) {
        var diff = new Date().getTime() - start_time;
        console.log(imgObj.width + "" + imgObj.height)
        clearInterval(set);
    }
}
var set = setInterval(check,40)

這種方法比onload方法執行效率會快一些;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM