2012-05-07 67 views
11

Tôi có một trang có hình thu nhỏ, được đổi kích thước bằng css thành 150x150 và khi tôi nhấp vào hình thu nhỏ, trang bị mờ và Hình ảnh được hiển thị ở kích thước thật.Nhận kích thước hình ảnh thực tế, sau khi đổi kích thước ảnh

Hiện tại, tôi phải tạo thủ công một mảng bao gồm chiều cao thực tế của tất cả các hình ảnh. Để giải quyết vấn đề thiết kế + hoạt động ít thủ công hơn trong thư viện của tôi, tôi cần phải có chiều cao thực tế của hình ảnh, sau khi tôi đổi kích thước hình ảnh (CSS).

tôi đã cố gắng:

var imageheight = document.getElementById(imageid).height; 

Và:

var imageheight = $('#' + imageid).height(); 

Nhưng cả hai trở lại 150px thuộc tính được gán với CSS. Làm sao tôi có thể giải quyết việc này? Cảm ơn

+0

thể trùng lặp của http://stackoverflow.com/ Câu hỏi/7682772/get-image-size-after-resize-javascript –

+2

Vì vậy, bạn đang tải tất cả hình ảnh có kích thước đầy đủ thay vì tạo hình thu nhỏ phù hợp? Ouch ... – Guffa

+0

Tôi đang tải hình ảnh có kích thước đầy đủ và hiển thị hình ảnh đó khi nhấp vào hình thu nhỏ. – Novak

Trả lời

14

Một cách bạn có thể làm là tạo một đối tượng hình ảnh riêng biệt.

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 

}); 

Bằng cách đó, bạn sẽ sử dụng cùng một hình ảnh chứ không phải hình ảnh trên DOM có kích thước được sửa đổi. Hình ảnh được lưu trong bộ nhớ cache, theo như tôi biết, sẽ được tái chế bằng phương pháp này. Vì vậy, không phải lo lắng về các yêu cầu HTTP bổ sung.

+0

Cảm ơn @Joseph, hiện đang hoạt động. – Novak

15

bạn có Kw 'tự nhiên' để giúp bạn ra ngoài:

với js:

var imageheight = document.getElementById(imageid).naturalHeight; 

hoặc với jquery

var imageheight = $('#' + imageid).naturalHeight; 
+0

câu trả lời tuyệt vời, cảm ơn – imkost

+1

cho IE9 + và bất kỳ trình duyệt chính nào khác, các thuộc tính này hợp lệ. Đây là một câu trả lời hay! Ai đó có lẽ đã bao bọc một plugin jQuery cho việc này. Nếu không, điều này có thể là thú vị để có. –

Các vấn đề liên quan