微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ruby-on-rails – 使用carrierwave获取gif中的第一张图像

我使用载波上传gifs工作正常,问题出现当我尝试生成拇指版本并将gif转换为jpeg只有gif中的第一个图像作为拇指,我得到一个错误
LocalJumpError in ImagesController#create

no block given (yield)

app/controllers/images_controller.rb:21:in `new'
app/controllers/images_controller.rb:21:in `create'

请求

参数:

{"utf8"=>"✓","authenticity_token"=>"lPEjP1WtPxFdizL2/FAWGHzOZPtecb5nKzKO8dg5ZdE=","image"=>{"image"=>#<Actiondispatch::Http::UploadedFile:0x007ff5d4cdc720 @original_filename="some-file-name.gif",@content_type="image/gif",@headers="Content-disposition: form-data; name=\"image[image]\"; filename=\"some-file-name.gif\"\r\nContent-Type: image/gif\r\n",@tempfile=#<File:/var/folders/c8/1t7w8nln4b3bvs4_nv2cyn2m0000gt/T/RackMultipart20120326-5101-gcyvk0>>,"remote_image_url"=>"","title"=>"The red panda","nsw"=>"0"},"commit"=>"Roll GIF"}

这是我用来生成拇指的代码

version :thumb do
    process :resize_to_limit => [200,200]
    process :convert => 'jpg'
end

希望你们能提前帮助和感谢.

解决方法

要使用carrierwave从gif图像中删除动画,您可以定义以下处理器:
def remove_animation
  manipulate! do |img,index|
    index == 0 ? img : nil
  end
end

所以,拇指版的代码将是:

version :thumb do
  process :remove_animation
  process :resize_to_limit => [200,200]
  process :convert => 'jpg'
end

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐