web-dev-qa-db-ja.com

コマンドラインで画像を24ビットに変換する方法BMP?

[〜#〜] arss [〜#〜] のラッパーBashスクリプトを作成して、使いやすくしています。プログラムは画像を音声に、またはその逆に変換しますが、24ビットのBMP画像のみを受け入れます。これは、これまでGIMPを使用してのみ生成できました。

特定の画像を適切なBMPファイルに変換して、ARSSで処理できるようにする方法を探しています。ImageMagicのconvertを試してみましたが、取得できません24-bt色深度。

これが私のスクリプトです:

#!/bin/bash

# where is ARSS binary?
ARSS="/unfa/Applications/ARSS/arss-0.2.3-linux-binary/arss"

convert "$1" -depth 24 "$1.bmp"

$ARSS --quiet "$1.bmp" "$1.wav" --sample-rate 48000 --format-param 32 --sine --min-freq 20 --max-freq 20000 --pps 250

出力は次のとおりです。

$ ./warss.sh 01.png
The Analysis & Resynthesis Sound Spectrograph 0.2.3
Input file : 01.png.bmp
Output file : 01.png.wav
Wrong BMP format, BMP images must be in 24-bit colour

ご覧のとおり、convert "$1" -depth 24 "$1.bmp" 24ビットの画像を取得するにはBMP=画像ですが、期待どおりに動作しません。

参考までに、GIMPでエクスポートするときに適切なファイルを取得します。

enter image description here

また、ARSSはこのようなBMPファイルを正常に処理します。

ただし、コマンドラインからそれを使用することはできません。GIMPのGUIを使用するたびに、達成しようとしている目的が損なわれます。コマンドをフィードしてGIMPをヘッドレスモードで使用する方法があることを確認しましたが、それが必要かどうかはわかりません。

多分私が知らない単純なものがあるのでしょうか?

2
unfa

ImageMagickフォーラムの投稿 によると、-type truecolorは、画像を強制的に24ビットにする正しい方法です。

convert "$1" -type truecolor "$1.bmp"
5
Kusalananda