1

したがって、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})

4

1 に答える 1