したがって、2 つの PNG 画像があり、どちらも非透過の 24bpp です。1 つの画像には虹が含まれており、もう 1 つの画像には 1 行のテキストが含まれています。

私はそれらの両方で同じことをします:
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に設定しました
その結果、ビット深度が異なる 2 つの画像ができました。
場合によっては、32bpp イメージもありました。
24bpp イメージのみを作成するにはどうすればよいですか (必要に応じてアルファ チャネルを破棄します)。また、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})。
