[英]Get actual image size, after resizing it
我有一個充滿縮略圖的頁面,用 css 調整大小為150x150
,當我單擊縮略圖時,頁面變暗,並且圖像以真實大小顯示。
目前,我必須手動創建一個包含所有圖像實際高度的數組。 為了解決我的畫廊的設計問題+較少的手動操作,我需要在調整圖像大小(CSS)后獲取圖像的實際高度。
我試過了:
var imageheight = document.getElementById(imageid).height;
和:
var imageheight = $('#' + imageid).height();
但兩者都返回由 CSS 分配的150px
屬性。 我該如何解決這個問題? 謝謝
你有“自然”的知識來幫助你:
與js:
var imageheight = document.getElementById(imageid).naturalHeight;
或使用 jquery
var imageheight = $('#' + imageid).naturalHeight;
一種方法是創建一個單獨的圖像對象。
function getImageDimensions(path,callback){
var img = new Image();
img.onload = function(){
callback({
width : img.width,
height : img.height
});
}
img.src = path;
}
getImageDimensions('image_src',function(data){
var img = data;
//img.width
//img.height
});
這樣,您將使用相同的圖像,但不會使用 DOM 上已修改尺寸的圖像。 據我所知,緩存的圖像將使用這種方法回收。 所以不用擔心額外的 HTTP 請求。
naturalHeight
僅使用naturalHeight
和naturalWidth
屬性的答案很棒,可能應該是公認的答案。
只是想在這里添加兩件可以節省人們數小時的事情,因為我看到很多關於這個問題的 SO 帖子並且我自己花了很多時間在它上面。
如果在加載圖像之前調用naturalHeight
可能返回0
或undefined
。 僅設置src
屬性可能並不意味着立即加載圖像。 我已經看到最好在onload
獲取它。
$('selector')[0].onload = function() { alert(this.naturalHeight); alert(this.naturalWidth); }
如果不使用this
,只是$('selector').naturalHeight
可能不起作用。 您可能需要訪問關聯的 DOM 元素,即$('selector')[0].naturalHeight
或$('selector').get(0).naturalHeight
因為我們使用的是原生 Javascript 的屬性naturalHeight
。 有關更多詳細信息,請參閱此 SO 帖子。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.