Shrine.rb - 上传后如何访问文件路径/原始文件

Shrine.rb - How to access the file path / raw file after it's been uploaded

我还有一些可以对图像执行的其他任务。比如选择多张图片,然后将它们组合成一张图片。我有使用 RMagick 和本地文件的那部分,我有使用 Shrine 的上传部分,但我需要将两者连接起来。上传图像后(理想情况下,该解决方案应适用于本地文件系统存储和 S3),我如何才能再次访问该文件,以使用 ImageMagick/RMagick 对其进行操作?我假设如果我使用的是 S3,我需要将图像从 S3 DL 传输到服务器并临时存储它们吗?还有其他方法吗?

您可以使用 Shrine::UploadedFile#download:

将任何上传的文件下载到临时文件
tempfile = photo.image.download
# or
tempfile = photo.image[:original].download

这个 returns 一个 Tempfile 实例,它是 File 的包装器,因此您可以通过 #path:

访问磁盘上的位置
system "convert #{tempfile.path} -resize 500x500 output.jpg"

对于图像处理,我会推荐 ImageProcessing gem,它会自动生成一个 Tempfile 作为结果(如果没有被垃圾收集关闭并删除)以前)。