加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读