使用 Shrine 和 MiniMagick 将 GIF 转换为 JPEG
Converting GIF to JPEG with Shrine and MiniMagick
我在 rails 的 ruby 中有这个项目,最近我将上传图片功能更改为 Shrine。
我希望能够上传动画 gif,然后创建静态 jpeg(或 gif,如果更容易)衍生。
我正在尝试这种方式
class GifUploader < Shrine
Attacher.derivatives do |original|
magick = ImageProcessing::MiniMagick
{
static: magick.loader(page: 0)
.loader(geometry: "450x250")
.call(original),
}
end
end
通过这种方法我收到了这个错误
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.
我也尝试了不同的方法,但也出现了同样的错误:
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
这是我在 rails ruby 中的第一个项目,我不知道发生了什么。我已经搜索过了,但是没有结果
我在 rails 6
上使用 ruby
好的,我设法解决了这个问题。基本上我颠倒了顺序并摆脱了任何“!”点。我还删除了 loader(geometry: "450x250")
代码:
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
我不知道为什么会这样,如果有人知道请在评论中解释
我在 rails 的 ruby 中有这个项目,最近我将上传图片功能更改为 Shrine。
我希望能够上传动画 gif,然后创建静态 jpeg(或 gif,如果更容易)衍生。
我正在尝试这种方式
class GifUploader < Shrine
Attacher.derivatives do |original|
magick = ImageProcessing::MiniMagick
{
static: magick.loader(page: 0)
.loader(geometry: "450x250")
.call(original),
}
end
end
通过这种方法我收到了这个错误
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.
我也尝试了不同的方法,但也出现了同样的错误:
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
这是我在 rails ruby 中的第一个项目,我不知道发生了什么。我已经搜索过了,但是没有结果
我在 rails 6
上使用 ruby好的,我设法解决了这个问题。基本上我颠倒了顺序并摆脱了任何“!”点。我还删除了 loader(geometry: "450x250")
代码:
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
我不知道为什么会这样,如果有人知道请在评论中解释