2016-05-12 71 views
0

我想從這樣的控制器操作渲染GIF動畫:生成斑點Gif動畫和渲染控制器

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

在數據等於從rmagick輸出一個blob。圖像呈現良好,但它不像我所期望的那樣動畫。我認爲它與rmagick圖像生成有關,而不是send_file,因爲如果我將rmagick中的動畫gif寫入磁盤並渲染它,它就像預期的那樣工作。

所以,到我rmagick代碼...

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 

這將返回一個blob,但我不知道,如果它返回一個單一的框架,或者如果它返回完整的gif動畫作爲斑點。我認爲這可能是我的問題。

關於如何使這項工作的任何想法?

+0

你看看輸出,看看它實際上是一個GIF動畫或不?這是任何人的猜測。 – tadman

+0

是的,我在控制器中渲染它,並且它不動畫。我試圖下載文件,它只有3kb(對於動畫gif來說似乎太小)。控制檯中的輸出沒有幫助,因爲blob看起來像這樣: JIFIFKK C\t \t v { ,M 9) +/H B췩 AnR $ Wk – Sean

+0

如果您有權訪問'file'命令,它通常會告訴您這是什麼。這看起來像一個JPEG文件。 – tadman

回答

1

感謝@tadman爲我指出了正確的方向。 blob的輸出格式不明確,因爲我有多個圖像和所有動畫選項,所以它會輸出一個gif。

我發現一個帖子,某人需要輸出blob作爲特定的格式(PNG),並能夠適應相同的用法。

這個工作對我來說:

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