1

所以我有两个PNG图像,都是不透明的24bpp。一张图片包含彩虹,另一张包含单行文字: 在此处输入图像描述

我对他们两个都做同样的事情:

var gm = require('gm').subClass({imageMagick: true})
gm("./sources/source.png").bitdepth(24).write("test.png", function(){
    console.log("test.png")
});
gm("./sources/source2.png").bitdepth(24).write("test2.png", function(){
    console.log("test2.png")
});

gm是哪里

我将两者都明确设置为 24bpp

结果我有两个不同位深度的图像:

在此处输入图像描述

在某些情况下,我也有 32bpp 图像。

我怎样才能让它只创建 24bpp 图像(如果需要,丢弃 alpha 通道)。另外,我不想创建jpg。


感谢@mark-setchell,我可以强制位深度。我在 Node 中是这样做的:

gm("./sources/source.png")
    .out("-define")
    .out("png:color-type=2")
    .write("test.png", function(){
    console.log("test.png")
});

out()是一种未记录的方法,但它基本上可以帮助您将自定义参数添加到命令行。请注意

    .out("-define png:color-type=2")

不起作用,只有在单独.out()调用中传递每个参数时它才起作用

.bitdepth(24)似乎根本不影响输出,可能是因为我在.subClass({imageMagick: true})上面做了。

4

1 回答 1

1

我的建议是尝试使用-define来设置变量png:color-type=2。当您制定并与社区分享时,它是按如下方式完成的:

gm("./sources/source.png")
    .out("-define")
    .out("png:color-type=2")
    .write("test.png", function(){
    console.log("test.png")
});
于 2015-08-17T14:29:37.940 回答