Carrierwave and mini_magick finding widths & height

后端 未结 4 1026
慢半拍i
慢半拍i 2021-02-06 12:30

After a bit of investigation I decided to use Carrierwave and mini_magick on my new rail3 app.

I\'ve set it up and it works perfectly. However I have a one question. I\

4条回答
  •  -上瘾入骨i
    2021-02-06 12:42

    Disadvantage of calculating Image height / width using RMagick or MiniMagick in run time:

    • Its CPU intensive
    • It requires Internet to get image and calculate the dimensions.
    • Its a slow process

    FYI You can also calculate the Image Height, Width after the Image is fully loaded by using the load event associated with the tag with the help of jQuery.

    For Example:

    $(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');
      }
    }
    

    Be careful, because load() will not trigger when an image is already loaded. This can happens easily when an image is in the user's browser cache.

    You can check if an image is already loaded using $('#myImage').prop('complete'), which returns true when an image is loaded.

提交回复
热议问题