Pregunta

Tengo un problema para encontrar una manera de salvar una imagen creada con RMagick en un archivo adjunto clip.

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

Estoy en un modelo que tiene un archivo adjunto

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

Y sólo quiero mi imagen devuelta por imageList.flatten_images que se guarda como la imagen de mi modelo.

¿alguien sabe cómo hacerlo fácilmente por favor?

gracias

¿Fue útil?

Solución

Vamos a ver si eso es lo que necesita

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

Cambiar YourModel con el modelo que está utilizando ...

Otros consejos

Se debe forzar la prórroga en TempFile.new; en este caso, me tire de la imagen original de S3 o algo así, esto está sucediendo en el modelo, por supuesto:

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

En las versiones posteriores de Paperclip (la mía es 5.0.0), tendrá que proporcionar propia instancia Tempfile de Paperclip:

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

Esto preserva la extensión de archivo al final del nombre de archivo, por lo que es reconocido por Paperclip cuando está cargado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top