我想使用我的 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>
调整图像大小的正确方法是什么?
您需要先使用 RMagick 读取文件:
img = Magick::Image::read(file_location).first
然后你可以使用resize_to_fit
:
@person.image = img.resize_to_fit(75, 75)
这是常见任务的良好指南
当您使用
rails generate uploader Avatar
您会注意到它在上传者/目录中添加一个文件。内容的开头将如下所示:
class AvatarUploader < CarrierWave::Uploader::Base
# permissions 0777
# Include RMagick or MiniMagick support:
# include CarrierWave::RMagick
# include CarrierWave::MiniMagick
如果您使用的是 rmagick 宝石,请取消注释 CarrierWave::RMagick。否则,请取消注释 CarrierWave::MiniMagick。