9 Stimmen

Büroklammeranhang aus rmagick-Bild erstellen

Ich habe ein Problem, eine Möglichkeit zu finden, ein mit RMagick erstelltes Bild in einem Büroklammer-Anhang zu speichern.

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

Ich bin in einem Modell, das eine angehängte Datei hat

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

und ich möchte nur, dass mein Bild, das von imageList.flatten_images zurückgegeben wird, als das Bild meines Modells gespeichert wird.

Weiß jemand, wie man das einfach machen kann?

danke

12voto

jordinl Punkte 5089

Mal sehen, ob es das ist, was Sie brauchen

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

Ändern Sie YourModel mit dem Modell, das Sie verwenden...

5voto

LucasLMartini Punkte 51

Sie sollten die Erweiterung auf TempFile.new erzwingen; in diesem Fall ziehe ich das Originalbild aus S3 oder ähnlichem, dies geschieht natürlich im Modell:

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

0voto

Jan Klimo Punkte 4095

In den späteren Versionen von Paperclip (meine ist 5.0.0 ), müssen Sie Paperclips eigene Tempfile Instanz:

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

Dadurch bleibt die Dateierweiterung am Ende des Dateinamens erhalten, so dass sie von Paperclip beim Hochladen erkannt wird.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X