在 node.js 中使用 graphicsmagick 提取 gif 帧

Extract frame of gif with graphicsmagick in node.js

我正在尝试使用 node.js 上的 graphicsmagick 将 gif 转换为 png。在他们的文档中,他们有以下代码:

// pull out the first frame of an animated gif and save as png
gm('/path/to/animated.gif[0]')
    .write('/path/to/firstframe.png', function(err){
    if (err) print('aaw, shucks')
})

但是如果我不是从文件而是从流或缓冲区读取数据怎么办?在那里我不必提供路径,因此无法附加 [0].

我需要的是这样的:

gm(streamOrBuffer).extractFrame(0)
    .write('/path/to/firstframe.png', function(err){
    if (err) print('aaw, shucks')
})

有一个类似的问题here,但发布者最终在 canvas 上绘制 gif 以在客户端提取第一帧。

我找不到任何看起来可以执行我想要的操作的 gm 命令。有任何想法吗?

根据 source 你可以使用 .selectFrame(0).

gm(streamOrBuffer)
    .selectFrame(0)
    .write('/path/to/firstframe.png', function(err) {
        if (err) console.log(err);
    });