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

前端之家收集整理的这篇文章主要介绍了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
原文链接:https://www.f2er.com/ruby/264881.html

猜你在找的Ruby相关文章