Как изменить размер изображения перед загрузкой с помощью Active Storage (связано с AWS) - PullRequest
0 голосов
/ 17 декабря 2018

Я пытаюсь использовать Active Storage с Amazon Web Services вместо Carrierwave и Cloudinary.

В Carrierwave у меня были некоторые функции, которые позволяют изменять размер изображений перед загрузкой через UploaderController.

НоКак это сделать с Active Storage?

Я пытаюсь это:

Gemfile:

gem 'aws-sdk-s3', require: false
gem 'image_processing', '~> 1.2'
gem 'mini_magick', '~>4.9'

item.rb

class Item < ApplicationRecord
    has_one_attached :photo
end

У меня естьформа на мой взгляд:

<%= f.input :photo, input_html: { accept: ('image') } %>

Я получаю этот объект как фотографию:

#<ActiveStorage::Attached::One:0x00005641d296e1b8 @name="photo", @record=#<Item id: nil, name: "test0941", verbe: "To Lend", collection_id: nil, created_at: nil, updated_at: nil, price_cents: 0, description: "", category_id: 78, photo: nil>, @dependent=:purge_later>

И в моем контроллере:

@item = Item.new(item_params)
@item.photo.combine_options do |b|
    b.resize "250x200>"
end

Я не могу достичьизменить размер моей фотографии методами MiniMagick gem.

У кого-нибудь есть идеи сделать это?

Спасибо за вашу помощь, Тибо

1 Ответ

0 голосов
/ 16 мая 2019

Если params из вашего поста - params [: item] [: photo], вы можете добавить

  image = MiniMagick::Image.new(params[:item][:photo].tempfile.path)
  image.resize "250x200>"
...