Crear un clip de fijación de la imagen RMagick
-
26-09-2019 - |
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
Solución
Vamos a ver si eso es lo que necesita ??p>
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.