有人知道如何使用Carrierwave + MiniMagick将动画GIF压缩到第一帧吗?

最佳答案

我认为MiniMagick进行了一些更改,因为我只花了三个小时试图找出为什么Andrey的代码对我不起作用。

我收到以下错误:

ActiveRecord::RecordInvalid (Validation failed:
Image Failed to manipulate with MiniMagick, maybe it is not an image?
Original Error: Command
("mogrify -scene /var/folders/0o/0oqNck+++TI/-Tmp-/mini_magick2022-499-15zc.gif")
failed: {:status_code=>1, :output=>"mogrify: invalid argument for option
`/var/folders/0o/0oqNck+++TI/-Tmp-/mini_magick2022-499-15zc.gif': -scene
@ error/mogrify.c/MogrifyImageCommand/5558.\n"})

最终,我发现MiniMagick::Image具有collapse!方法(可在此处找到http://www.ruby-doc.org/gems/docs/j/jf--mini_magick-3.1/MiniMagick/Image.html#method-i-collapse-21)来解决此问题:
process :remove_animation

def remove_animation
  manipulate! do |img|
    if img.mime_type.match /gif/
      img.collapse!
    end
    img
  end
end

关于ruby - Carrierwave + MiniMagick-如何将动画GIF压缩到第一帧?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13480499/

10-09 03:20