ruby-on-rails – 使用MiniMagick根据方向调整图像大小
发布时间:2020-12-17 01:30:06 所属栏目:百科 来源:网络整理
导读:我想根据它们是风景还是肖像来处理不同的图像. 这是我的图像上传器模型中的代码: def is_landscape? if @file image = ::MiniMagick::Image.open(file) Rails.logger.info "from in is_landscape? : #{image[:width] image[:height]}" image[:width] = imag
我想根据它们是风景还是肖像来处理不同的图像.
这是我的图像上传器模型中的代码: 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,if: :is_portrait? end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |