用JavaScript獲取原始圖片尺寸
在專案開發中,經常會遇到要出來圖片的問題,圖片大小?圖片自適應頁面,保證圖片不變形,按比例縮放等等,所以獲取圖片的原始大小是一個非常重要的參考要訣。
頁面裡的img元素,想要獲取它的原始尺寸,以寬度為例可能首先想到的就是width,如下:
<imgsrc="http://img11.360buyimg.com/da/g14/M07/01/0E/rBEhVlNhh8wIAAAAAADmFBLo1twAAM26gOmCgYAAOYs716.jpg">
<script>
var img = document.getElementsByTagName('img')[0]
var width = getWH(img, 'width') // 690
</script>
這裡使用的getWH方法是之前文章裡提到的。這時候獲取的寬度和圖片的原始尺寸是一樣的。
如果給img加上了width屬性,這種方式就不行了,比如圖片實際寬度是690,設定了width為400,這時按上面的方式獲取則返回400。
<img width="400" src="http://img11.360buyimg.com/da/g14/M07/01/0E/rBEhVlNhh8wIAAAAAADmFBLo1twAAM26gOmCgYAAOYs716.jpg">
<script>
var img = document.getElementsByTagName('img')[0]
var width = getWH(img, 'width') // 400
</script>
很明顯,400不是圖片的原始寬度。
有一種方式可以獲取到,直接建立一個新img物件,然後把舊img的src賦值給新的,這時候獲取新img的寬度即可。
<img width="400"src="http://img11.360buyimg.com/da/g14/M07/01/0E/rBEhVlNhh8wIAAAAAADmFBLo1twAAM26gOmCgYAAOYs716.jpg">
<script>
function getNaturalWidth(img) {
var image = new Image()
image.src = img.src
varnaturalWidth = image.width
return naturalWidth
}
var img =document.getElementsByTagName('img')[0]
getNaturalWidth(img) // 690
</script>
需要注意的是,這裡新建立的image是不需要新增的DOM文件裡的。
HTML5提供了一個新屬性naturalWidth
/naturalHeight
可以直接獲取圖片的原始寬高。這兩個屬性在Firefox/Chrome/Safari/Opera及IE9裡已經實現。改造下獲取圖片尺寸的方法。
function getImgNaturalDimensions(img,callback) {
var nWidth, nHeight
if (img.naturalWidth) { // 現代瀏覽器
nWidth = img.naturalWidth
nHeight = img.naturalHeight
}else { // IE6/7/8
var imgae = new Image()
image.src = img.src
image.onload = function() {
callback(image.width, image.height)
}
}
return [nWidth, nHeight]
}
注意IE6/7/8的處理,建立了一個新的img,僅設定其src,這時需要讓圖片完全載入後才可以獲取其寬高。因此這裡是非同步的,可以傳一個回撥,回撥裡把原始的寬高作為引數傳入。
本文為Anyforweb技術分享部落格,需要了解網站建設及更多Web應用相關資訊,請訪問anyforweb.com。
相關文章
- JavaScript獲取img的原始尺寸JavaScript
- JavaScript獲取背景圖片定位值JavaScript
- JavaScript獲取圖片的真實大小JavaScript
- app直播原始碼,Vue獲取URL圖片的寬高APP原始碼Vue
- 【API】隨機獲取圖片API隨機
- iOS 獲取視訊圖片iOS
- 獲取本地圖片/視訊地圖
- 批次修改圖片尺寸
- JavaScript獲取瀏覽器、元素、螢幕的寬高尺寸JavaScript瀏覽器
- 成品直播原始碼,JAVA獲取圖片的寬、高和大小原始碼Java
- 直播軟體原始碼,Vue獲取URL圖片的寬高原始碼Vue
- HTML5獲取圖片的原始高度簡單介紹HTML
- 獲取網路圖片的大小
- 直播系統原始碼,快速實現改變圖片尺寸原始碼
- jquery獲取圖片的真實大小jQuery
- 使用ColorfulImg獲取圖片主題色!
- 一鍵批次獲取易貝商品圖片的實用技巧
- Excel 讀取圖片並獲取儲存路徑Excel
- Python - opencv-python 獲取影片尺寸PythonOpenCV
- Chrome 獲取網頁顏色(文字、圖片)Chrome網頁
- 為啥從SurfaceView中獲取不到圖片?View
- 利用微信公眾號提供的官方API上傳圖片獲取永久圖片素材!當圖床用!API圖床
- python使用OpenCV設定圖片尺寸PythonOpenCV
- 圖片縮小尺寸演算法演算法
- node實現批量修改圖片尺寸
- 用python寫個爬取指定網址上所有圖片,並能根據獲取到的圖片網址,進入網址,再次進行圖片獲取 的程式碼指令碼Python指令碼
- Android 從手機相簿獲取圖片 uri 路徑 從相機獲取照片Android
- JavaScript 圖片全屏JavaScript
- 整理獲取 viewport 和 element 尺寸和位置方法View
- 直播原始碼搭建教程之獲取相簿中的指定一個圖片後上傳原始碼
- WebRTC從攝像頭獲取圖片傳入canvasWebCanvas
- activiti 獲取當前任務流程圖片的輸入流流程圖
- flowable 獲取當前任務流程圖片的輸入流流程圖
- Java後臺Html轉圖片和獲取頁面屬性值,及圖片拼接JavaHTML
- Unity從圖片的位元組資料裡面獲取圖片的寬和高Unity
- app直播原始碼,js實現上傳圖片型別+大小+尺寸驗證APP原始碼JS型別
- UEditor 自定義圖片視訊尺寸校驗
- .NET 調整圖片尺寸(Resize)各種方法
- 直播帶貨小程式原始碼中,商品詳情頁是如何獲取html圖片的原始碼HTML