从Blob生成动画Gif并在控制器中渲染

时间:2016-05-12 21:28:58

标签: ruby-on-rails ruby animated-gif rmagick

我正试图从控制器动作渲染动画Gif,如下所示:

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

其中data等于rmagick的blob输出。图像渲染得很好,但它不像我期望的那样动画。我认为它与rmagick图像生成有关,而不是send_file,因为如果我改为将动画gif从rmagick写入磁盘并渲染它,它就会像预期的那样工作。

所以,在我的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作为blob返回。我想这可能是我的问题。

有关如何使这项工作的任何想法?

1 个答案:

答案 0 :(得分:1)

感谢@tadman指出我正确的方向。 blob的输出格式是模糊的,我假设因为我有多个图像和所有动画选项,它会输出一个gif。

我在某个地方发现了一个帖子,有人需要将blob作为特定格式(png)输出,并且能够适应相同的用法。

这对我有用:

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