使用CarrierWave检索图像高度

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

我有我的ImageUploader类:

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

有没有办法可以让图像的尺寸与此相似?

 height = @picture.image_height(:post) 

您可以调整和使用此处描述的方法: 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 

您可以挂钩: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 

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

我用Google搜索了一些来自以下内容的post:

来源链接http://groups.google.com/group/carrierwave/browse_thread/thread/c5e93b45bde8a85e?fwc=1&pli=1

 class HeaderUploader < CarrierWave::Uploader::Base storage :right_s3 def store_dir "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" end def url ["http://#{s3_bucket}.s3.amazonaws.com/", path].compact.join end before :cache, :capture_size_before_cache before :retrieve_from_cache, :capture_size_after_retrieve_from_cache def capture_size_before_cache(new_file) model.header_width, model.header_height = `identify -format "%wx %h" #{new_file.path}`.split(/x/) end def capture_size_after_retrieve_from_cache(cache_name) model.header_width, model.header_height = `identify -format "%wx %h" #...@file.path}`.split(/x/) end def dimensions "#{model.header_width}x#{model.header_height}" end end