我想根据它们是风景还是肖像来处理不同的图像. 这是我的图像上传器模型中的代码: def is_landscape? if @file image = ::MiniMagick::Image.open(file) Rails.logger.info "from in is_landscape? : #{image[:width] i
这是我的图像上传器模型中的代码:
def is_landscape? if @file image = ::MiniMagick::Image.open(file) Rails.logger.info "from in is_landscape? : #{image[:width] > image[:height]}" image[:width] >= image[:height] end end def is_portrait? Rails.logger.info "from in is_portrait? : #{image[:height] > image[:width]}" image[:height] > image[:width] end process :resize_to_fill => [667, 500], if: :is_landscape? process :resize_to_fill => [500, 667], if: :is_portrait? version :preview do process :resize_to_fill => [380,285] end version :thumb do process :resize_to_fill => [105,79], if: :is_landscape? process :resize_to_fill => [105, 158], if: :is_portrait? end
我收到了错误
"ArgumentError (wrong number of arguments (1 for 0)): app/uploaders/image_path_uploader.rb:31:in `is_landscape?'"
我究竟做错了什么?
我不得不将新文件传递给is_landscape?和is_portrait?让它工作的方法:def is_landscape?(new_file) image = ::MiniMagick::Image::read(File.binread(@file.file)) Rails.logger.info "from in is_landscape? : #{image[:width] > image[:height]}" image[:width] >= image[:height] end def is_portrait?(new_file) Rails.logger.info "from in is_portrait? : #{ !is_landscape?(new_file)}" !is_landscape?(new_file) end process :resize_to_fill => [667, 500], if: :is_landscape? process :resize_to_fill => [500, 667], if: :is_portrait? version :preview do process :resize_to_fill => [380,285] end version :thumb do process :resize_to_fill => [105,79], if: :is_landscape? process :resize_to_fill => [105, 158], if: :is_portrait? end