使用CarrierWave检索图像高度

Dav*_*vid 9 ruby ruby-on-rails carrierwave

我需要能够放置处理过的图像的尺寸.

ImageUploader上课了:

version :post do
  process :resize_to_fit => [200, nil]
end
Run Code Online (Sandbox Code Playgroud)

有没有办法让图像的尺寸与此类似?

height = @picture.image_height(:post)
Run Code Online (Sandbox Code Playgroud)

Jam*_*hen 12

您可以调整和使用此处描述的方法:http://code.dblock.org/carrierwave-saving-best-image-geometry

它添加了一个过程,然后调用Magick的方法来获取图像几何.

码:

  version :post do
    process :resize_to_fit => [200, nil]
    process :get_geometry

    def geometry
      @geometry
    end
  end

  def get_geometry
    if (@file)
      img = ::Magick::Image::read(@file.file).first
      @geometry = [ img.columns, img.rows ]
    end
  end
Run Code Online (Sandbox Code Playgroud)


gle*_*ebm 7

您可以挂钩:cache和:retrieve_from_cache方法

无需依赖系统命令:

# Somewhere in your uploader:
attr_reader :geometry
after :cache, :capture_size
after :retrieve_from_cache, :capture_size
def capture_size(*args)    
  img = ::MiniMagick::Image::read(File.binread(@file.file))
  @geometry = [img[:width], img[:height]]
end
Run Code Online (Sandbox Code Playgroud)

http://www.glebm.com/2012/05/carrierwave-image-dimensions.html