У меня есть и другие задачи, которые можно выполнять с изображениями. Например, выбор нескольких изображений и объединение их в одно изображение. У меня эта часть работает с RMagick и локальными файлами, а часть загрузки работает с Shrine, но мне нужно соединить их. После загрузки изображения (в идеале решение должно работать либо с локальным хранилищем файловой системы, либо с S3), как я могу снова получить доступ к файлу, чтобы управлять им с помощью ImageMagick / RMagick? Я предполагаю, что если я использую S3, мне нужно будет передать изображения с S3 на сервер и сохранить их временно? Есть ли другой способ сделать это?
Shrine.rb - Как получить доступ к пути к файлу / необработанному файлу после его загрузки
Ответы (1)
Вы можете загрузить любой загруженный файл во временный файл, используя Shrine::UploadedFile#download
:
tempfile = photo.image.download
# or
tempfile = photo.image[:original].download
Это возвращает экземпляр Tempfile
, который является оболочкой для File
, поэтому вы можете получить доступ к местоположению на диске через #path
:
system "convert #{tempfile.path} -resize 500x500 output.jpg"
Для обработки изображений я бы порекомендовал гем ImageProcessing, который автоматически генерирует Tempfile
в качестве результата (т.е. закрыто и удалено при сборке мусора, если это не было ранее).
person
janko-m
schedule
20.07.2018
Спасибо, @ janko-m! Это то, что я искал.
- person Peter R; 20.07.2018