9

我很难找到一种方法来将使用 RMagick 创建的图像保存在回形针附件中。

imageList = Magick::ImageList.new
imageList.new("images/apple.gif", "images/overlay.png")
...
picture = imageList.flatten_images

我在一个带有附件的模型中

has_attached_file :picture, :url => ..., :path => ...

我只想将 imageList.flatten_images 返回的图像保存为我的模型的图片。

有谁知道如何轻松做到这一点?

谢谢

4

3 回答 3

12

让我们看看这是不是你需要的

picture = imageList.flatten_images
file = Tempfile.new('my_picture.jpg')
picture.write(file.path)
YourModel.create(:picture => file, ...)

更改YourModel您使用的模型...

于 2010-10-27T19:18:41.877 回答
5

您应该在 TempFile.new 上强制扩展;在这种情况下,我从 S3 或类似的东西中提取原始图像,这当然发生在模型中:

orig_img = Magick::ImageList.new(self.photo.url(:original))

#process image here

# Force extension with array form:
file = Tempfile.new(['processed','.jpg'])
orig_img.write(file.path)
self.photo = file
self.save
于 2013-04-29T22:52:26.370 回答
0

在 Paperclip 的更高版本(我的是5.0.0)中,您需要提供 Paperclip 自己的Tempfile实例:

file = Paperclip::Tempfile.new(["processed", ".jpg"])
thumb.write(file.path)
result = YourModel.create(image: file)

这会保留文件名末尾的文件扩展名,以便在上传时被 Paperclip 识别。

于 2017-01-31T17:46:39.503 回答