我还有其他一些可以在图像上执行的任务。例如选择多个图像,然后将它们组合为一个图像。我的那一部分使用RMagick和本地文件,而我的上载部分使用Shrine,但是我需要将两者连接起来。上载图像后(理想情况下,该解决方案应适用于本地文件系统存储和S3),如何才能再次访问该文件,以使用ImageMagick / RMagick对其进行操作?我假设如果使用的是S3,则需要将S3中的图像从DL分发到服务器并暂时存储?还有其他方法吗?
答案 0 :(得分:2)
您可以使用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
(如果以前没有使用过,则会在垃圾回收时将其关闭并删除)。