无法使用Rails 5和RMagick gem调整图像大小

时间:2018-01-21 19:30:01

标签: ruby-on-rails image resize imagemagick ruby-on-rails-5

我希望使用我的Rails 5应用程序调整上传图像的大小以调整其高度(并自动调整宽度)。我安装了这个宝石

gem 'rmagick'

我试图像这样调整大小

@person = Person.new(person_params)
if @person.image

  cur_time_in_ms = DateTime.now.strftime('%Q')
  file_location = "/tmp/file#{cur_time_in_ms}.ext"
  File.binwrite(file_location, @person.image.read)
  file = File.open(file_location, "rb")
  contents = file.read
  # Scale image appropriately
  @person.image = contents.resize_to_fit(1000000, Rails.configuration.max_img_height)

但是在

@person.image = contents.resize_to_fit(1000000, Rails.configuration.max_img_height)

行,我收到了错误

undefined method `resize_to_fit' for #<String:0x007fab53660c78>

调整图片大小的正确方法是什么?

2 个答案:

答案 0 :(得分:0)

您需要先使用RMagick读取文件:

img = Magick::Image::read(file_location).first

然后你可以使用resize_to_fit

@person.image = img.resize_to_fit(75, 75)

以下是common tasks

的良好指南

答案 1 :(得分:0)

使用生成新的上传器时

rails generate uploader Avatar

您会注意到它在uploaders /目录中添加了一个文件。内容的开头看起来像这样:

class AvatarUploader < CarrierWave::Uploader::Base
  # permissions 0777
  # Include RMagick or MiniMagick support:
  # include CarrierWave::RMagick
  # include CarrierWave::MiniMagick

如果您正在使用rmagick gem,请取消注释CarrierWave :: RMagick。否则,取消注释CarrierWave :: MiniMagick。