2016-05-12 27 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' }