所以我有两个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})
上面做了。