Wada obliczania obrazu height
/width
przy użyciu RMagick
lub MiniMagick
w czasie wykonywania:
- Jego obciąża CPU
- Wymaga Internetu, aby uzyskać obraz i obliczyć wymiary.
- Jest to proces powolny
FYI Można również obliczyć obraz Height
, Width
po obrazu jest w pełni załadowany za pomocą zdarzenia load
związanego z <img>
tagu za pomocą jQuery.
Dla przykładu:
$(document).ready(function(){
var $image = $('.fixed-frame img');
$image.load(function(){
rePositionLogo($image);
});
if($image.prop('complete')){
rePositionLogo($image);
}
});
function rePositionLogo($image){
var height = $image.height();
var width = $image.width();
if (width > height) {
$image.parents('.header').addClass('landscape');
var marginTop = (105 - $image.height())/2;
$image.css('margin-top', marginTop + 'px')
}else{
$image.parents('.header').addClass('portrait');
}
}
Bądź ostrożny, ponieważ load()
nie spowodują, gdy obraz jest już załadowany. Zdarza się to łatwo, gdy obraz znajduje się w przeglądarce użytkownika cache
.
Można sprawdzić, czy obraz jest już załadowany za pomocą $('#myImage').prop('complete')
, który zwraca true
po załadowaniu obrazu.