2016-05-12 20 views
0

Ich versuche, ein animiertes Gif von einer Controller-Aktion wie folgt zu machen:generieren Animierte Gif von Blobs und machen in Controller

send_file data, type: 'image/gif', disposition: 'inline' 

wo Daten an einen Klecks Ausgabe von RMagick gleich ist. Das Bild wird gut wiedergegeben, aber es ist nicht wie erwartet animiert. Ich denke, es hat etwas mit der rmagick-Bildgenerierung zu tun, und nicht mit der send_file, denn wenn ich stattdessen das animierte gif von rmagick auf die Festplatte schreibe und es rendere, funktioniert es wie erwartet.

Also, auf meine RMagick Code ...

gif = Magick::ImageList.new 
gif.from_blob *frames # frames is an array of image blobs 
gif.delay = delay if delay 
gif.iterations = iterations if iterations 
gif.scene = scene if scene 
gif.ticks_per_second = ticks_per_second if ticks_per_second 
gif.to_blob 

Dies gibt einen Klecks, aber ich bin nicht sicher, ob es ein Einzelbild zurückkehrt, oder wenn es die komplette animierte GIF als zurückkehrt Klecks. Ich denke, das könnte mein Problem sein.

Alle Ideen, wie diese Arbeit zu machen?

+0

Haben Sie einen Blick auf den Ausgang, um zu sehen, ob es tatsächlich ein animiertes GIF oder nicht? Es ist jemand hier raten. – tadman

+0

Ja, ich rende es in einem Controller, und es animiert nicht. Ich habe versucht, die Datei herunterzuladen, und es ist nur 3kb (scheint zu klein für ein animiertes gif). Die Ausgabe in der Konsole ist nicht hilfreich, da ein Blob ungefähr so ​​aussieht: JFIFKK C \t \t 12 { , M 9) +/ H B 췩 AnR $ Wk – Sean

+0

Wenn Sie Zugriff auf den Befehl 'file' haben, wird es Ihnen normalerweise sagen, was das ist. Das scheint wie eine JPEG-Datei. – tadman

Antwort

1

Dank @tadman für mich in der richtigen Richtung. Das Ausgabeformat von Blob ist mehrdeutig und ich nahm an, da ich mehrere Bilder und alle Animationsoptionen hatte, dass es ein gif ausgeben würde.

fand ich einen Beitrag irgendwo, dass jemand zur Ausgabe benötigte das Blob als ein bestimmtes Format (PNG) und war in der Lage die gleiche Nutzung anzupassen.

arbeitet für mich:

gif.to_blob { |attrs| attrs.format = 'gif' }