将 png 转换为 jpeg 节点 js 时,Graphics Magick 输出错误的颜色
Graphics Magick output wrong colour when converting png to jpeg node js
背景是,我正在使用 FFMPEG 将视频(mp4、mov)拆分为 PNG 帧,然后使用 GraphicsMagick 将它们转换为 jpeg。
所以我在 NodeJS 中使用 GraphicsMagick,来自 here,下面是一个片段:
var gm = require('gm').subClass({imageMagick: true});
gm('input.png')
.write('output.jpg', (err) => {
if (err) return console.log(err);
console.log('done');
});
但是输出的 jpeg 颜色不是褪色就是太暗。
有关输出,请参阅 here。原始视频在左边 (mov),转换后的 JPEG 视频在中间和右边。
中间的是 Heroku 上的节点应用 运行 右图是 my osx machine[=30= 上的节点应用].
我读过它可能与 'profiles' 有关,但这似乎没有什么区别:
.profile('sRGB.icc')
'sRGB.icc' 是我下载的颜色配置文件。
有什么想法吗?
我也尝试过将颜色设置为 16,777,216,尝试将位深度设置为 8 和 16,尝试将色彩空间设置为 'rgb' 无济于事。
因此,经过长时间的大量测试和配置(使用 Docker 大量构建),问题是较新的 FFMPEG 构建会渲染出带有某种混乱配置文件的图像,从而导致颜色问题。
恢复到旧版本的 FFMPEG(2014 版本)解决了这个问题。
背景是,我正在使用 FFMPEG 将视频(mp4、mov)拆分为 PNG 帧,然后使用 GraphicsMagick 将它们转换为 jpeg。
所以我在 NodeJS 中使用 GraphicsMagick,来自 here,下面是一个片段:
var gm = require('gm').subClass({imageMagick: true});
gm('input.png')
.write('output.jpg', (err) => {
if (err) return console.log(err);
console.log('done');
});
但是输出的 jpeg 颜色不是褪色就是太暗。 有关输出,请参阅 here。原始视频在左边 (mov),转换后的 JPEG 视频在中间和右边。 中间的是 Heroku 上的节点应用 运行 右图是 my osx machine[=30= 上的节点应用].
我读过它可能与 'profiles' 有关,但这似乎没有什么区别:
.profile('sRGB.icc')
'sRGB.icc' 是我下载的颜色配置文件。
有什么想法吗?
我也尝试过将颜色设置为 16,777,216,尝试将位深度设置为 8 和 16,尝试将色彩空间设置为 'rgb' 无济于事。
因此,经过长时间的大量测试和配置(使用 Docker 大量构建),问题是较新的 FFMPEG 构建会渲染出带有某种混乱配置文件的图像,从而导致颜色问题。
恢复到旧版本的 FFMPEG(2014 版本)解决了这个问题。