gpt4 book ai didi

ruby-on-rails - 使用 MiniMagick 根据方向调整图像大小

转载 作者:行者123 更新时间:2023-12-04 06:11:33 24 4
gpt4 key购买 nike

我想根据图像是横向还是纵向以不同方式处理图像。

这是我的图片 uploader 模型中的代码:

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

关于ruby-on-rails - 使用 MiniMagick 根据方向调整图像大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17452714/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com