最近,我負責的后台系統有一個圖片上傳校驗圖片比例的需求,以前沒有做過這種需求,便查了一些資料總結了一下圖片上傳獲取寬高的方法。
想要獲取圖片的寬高首先要知道圖片的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方法執行效率會快一些;