首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Shrine和MiniMagick实现GIF到JPEG的转换

用Shrine和MiniMagick实现GIF到JPEG的转换
EN

Stack Overflow用户
提问于 2021-11-17 20:31:42
回答 1查看 35关注 0票数 1

我在ruby on rails中有这个项目,最近我把上传图片的功能改成了神殿。

我希望能够上传一个动画的gif,然后创建一个静态的jpeg (或gif,如果它更容易)衍生。

我正试着走这条路

代码语言:javascript
复制
    class GifUploader < Shrine
      Attacher.derivatives do |original|
        magick = ImageProcessing::MiniMagick
    
        {
            static: magick.loader(page: 0)
                        .loader(geometry: "450x250")
                        .call(original),
        }
      end
    end

使用这种方法时,我收到了以下错误

代码语言:javascript
复制
MiniMagick::Error: `convert /tmp/shrine20211117-94958-ieep9h.gif[0][450x250] -au
to-orient /tmp/image_processing20211117-94958-q3i2qe.gif` failed with error:    
convert-im6.q16: unable to open image `/tmp/shrine20211117-94958-ieep9h.gif[0][450x250]': No such file or directory @ error/blob.c/OpenBlob/2924.
convert-im6.q16: no decode delegate for this image format `' @ error/constitute.c/ReadImage/575.
convert-im6.q16: no images defined `/tmp/image_processing20211117-94958-q3i2qe.gif' @ error/convert.c/ConvertImageCommand/3229.

我还尝试了一种不同的方法,并给出了相同的错误:

代码语言:javascript
复制
require "image_processing/mini_magick"

class GifUploader < Shrine
  Attacher.derivatives do |original|
    magick = ImageProcessing::MiniMagick.source(original)
    {
        static: magick   # original is a IO object   
                    .loader(page: 0)
                    .loader(geometry: "450x250")
                    .convert!("jpeg")
                    .call(original),
    }
  end
end

这是我在ruby on rails上的第一个项目,我不知道发生了什么。我已经找过了,但是没有结果

我使用的是ruby on rails 6。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-18 18:41:50

好吧,我设法解决了这个问题。基本上我颠倒了顺序,去掉了任何"!“分数。我还删除了loader(geometry: "450x250")

代码:

代码语言:javascript
复制
require "image_processing/mini_magick"

class GifUploader < Shrine
  Attacher.derivatives do |original|
    magick = ImageProcessing::MiniMagick.source(original)
    {
      static: magick.convert("jpeg").loader(page: 0).call
    }
  end
end

我不知道为什么这样做,如果有人知道,请在评论中解释

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70011157

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档