首页 > 解决方案 > 在 ActiveStorage 中使用变体选项后如何保存图像副本。

问题描述

我在需要处理图像的 ActiveStorage 中遇到这个问题,我的要求是保存处理后的图像并在裁剪和其他转换后将其附加到新模型。

标签: ruby-on-railsrails-activestorage

解决方案


ActiveStorage::Blob#variant适应不同的用例,所以ActiveStorage::Variation直接处理。以下假设是最新的 Rails master 而不是 Rails 5.2:

variation = ActiveStorage::Variation.new(resize_to_fit: [100, 100], crop: true)

message.header_image.open do |input|
  variation.transform(input, format: "png") do |output|
    message.cropped_header_image.attach \
      io: output,
      filename: "#{message.header_image.filename.base}.png",
      content_type: "image/png"
  end
end

推荐阅读