我需要能夠放置處理後的圖像的尺寸。使用CarrierWave檢索圖像高度
我有我的ImageUploader
類:
version :post do
process :resize_to_fit => [200, nil]
end
有沒有辦法,我能得到類似這樣圖像的尺寸的方法嗎?
height = @picture.image_height(:post)
我需要能夠放置處理後的圖像的尺寸。使用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
我用Google搜索一些圍繞來到到與後下:
源鏈接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" #[email protected]}`.split(/x/)
end
def dimensions
"#{model.header_width}x#{model.header_height}"
end
end
你可以連接到:緩存和: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
謝謝!標記爲答案的解決方案對我無效。不錯的簡單解決方案。 – 2013-06-07 17:28:02
請注意,這隻會捕獲最大版本的大小。您可以使用https://github.com/gzigzigzeo/carrierwave-meta獲得多個版本支持(它會像其他示例一樣添加進程)。此外,這可能不是很有效,因爲我似乎在這裏使用'binread',它讀取整個文件而不是頭部 – glebm 2013-06-08 04:00:04
+1這種方法比RMagick推薦的方法更清潔這裏:http://www.imagemagick.org/RMagick/doc/comtasks.html – iwasrobbed 2011-12-21 02:31:23
我不確定這裏,但讓我推薦。平滑而不是。讀(來自http://stackoverflow.com/a/ 16267106/4738391) – 2016-11-07 07:13:37