قم بإنشاء مرفق Paperclip من صورة Rmagick
-
26-09-2019 - |
سؤال
لدي مشكلة لإيجاد طريقة لحفظ صورة تم إنشاؤها باستخدام Rmagick في مرفق paperclip.
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 أن يتم حفظها كصورة لنموذجتي.
هل يعرف أحد كيف يفعل ذلك بسهولة من فضلك؟
شكرًا
المحلول
دعونا نرى ما إذا كان هذا ما تحتاجه
picture = imageList.flatten_images
file = Tempfile.new('my_picture.jpg')
picture.write(file.path)
YourModel.create(:picture => file, ...)
يتغيرون YourModel
مع النموذج الذي تستخدمه ...
نصائح أخرى
يجب أن تجبر التمديد على 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
في الإصدارات اللاحقة من paperclip (الألغام هو 5.0.0
) ، ستحتاج إلى توفير Paperclip الخاص Tempfile
نموذج:
file = Paperclip::Tempfile.new(["processed", ".jpg"])
thumb.write(file.path)
result = YourModel.create(image: file)
يحافظ هذا على امتداد الملف في نهاية اسم الملف ، بحيث يتم التعرف عليه بواسطة paperclip عند تحميله.
لا تنتمي إلى StackOverflow