Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Graphics Magick在将png转换为jpeg节点时输出错误的颜色_Node.js_Heroku_Ffmpeg_Imagemagick_Graphicsmagick - Fatal编程技术网

Node.js Graphics Magick在将png转换为jpeg节点时输出错误的颜色

Node.js Graphics Magick在将png转换为jpeg节点时输出错误的颜色,node.js,heroku,ffmpeg,imagemagick,graphicsmagick,Node.js,Heroku,Ffmpeg,Imagemagick,Graphicsmagick,背景是,我正在使用FFMPEG将视频(mp4,mov)拆分为PNG帧,然后使用GraphicsMagick将其转换为jpeg 所以我在NodeJS中使用GraphicsMagick,下面是一个片段: var gm = require('gm').subClass({imageMagick: true}); gm('input.png') .write('output.jpg', (err) => { if (err) return console.log(err); consol

背景是,我正在使用FFMPEG将视频(mp4,mov)拆分为PNG帧,然后使用GraphicsMagick将其转换为jpeg

所以我在NodeJS中使用GraphicsMagick,下面是一个片段:

var gm = require('gm').subClass({imageMagick: true});

gm('input.png')
.write('output.jpg', (err) => {
  if (err) return console.log(err);
  console.log('done');
});
但是输出的jpeg颜色要么被洗掉,要么太暗。 有关输出,请参阅。原始视频为左(mov),转换后的JPEG为中间和右侧。 中间的一个是运行在Heroku上的节点应用程序,右边的图像是运行在my osx机器上的节点应用程序

我读过,这可能与“个人资料”有关,但这似乎没有什么区别:

.profile('sRGB.icc')
“sRGB.icc”是我下载的一个颜色配置文件

有什么想法吗


我还尝试将颜色设置为16777216,尝试将位深度设置为8和16,尝试将颜色空间设置为“rgb”,但都无济于事。

因此,经过长时间的测试和大量的配置(大量使用Docker构建)问题是较新版本的FFMPEG渲染出的图像带有某种混乱的轮廓,这会导致颜色问题


恢复到旧版本的FFMPEG(2014版)解决了这个问题。

您的做法是正确的,很可能与配置文件有关。您最好看看PNGs属性(大多数图像查看器都有办法找到它),看看它使用了什么颜色空间。然后,您需要找到合适的配置文件并使用它来运行转换。为什么不使用
ffmpeg
输出到JPG?我不会从ffmpeg输出到JPEG,因为我无法直接控制JPEG的质量。首先转到PNG允许我指定在graphics magick中转换所需的JPEG质量。谢谢,本杰明,我会看一看,看看我能找到什么。@BenjaminKaiser所以输出PNG的颜色空间为
RGB
,颜色配置文件为
Calibrated RGB Colorspace
。输出的JPEG没有配置文件,但我假设我的mac电脑有一个自定义配置文件,它是经过校准的配置文件…你能将电影的完整控制台输出发布到PNG命令吗?我相信这是一个提供正确格式/swscaler标志的问题。