如何在命令行中将图像转换为 24 位 BMP?

unf*_*nfa 2 command-line imagemagick image-manipulation conversion gimp

我正在为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
Run Code Online (Sandbox Code Playgroud)

这是输出:

$ ./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
Run Code Online (Sandbox Code Playgroud)

如您所见,我尝试使用convert "$1" -depth 24 "$1.bmp"来获取 24 位 BMP 图像,但这并没有像我预期的那样工作。

作为参考,我在使用 GIMP 导出时得到了一个正确的文件:

在此处输入图片说明

ARSS 可以很好地处理这样的 BMP 文件。

但是,我无法从命令行使用它,并且每次使用 GIMP 的 GUI 都违背了我想要实现的目的。我看到有一种方法可以通过提供命令来在无头模式下使用 GIMP,但我不知道我是否需要它。

也许只是一些简单的事情我不知道?

Kus*_*nda 5

根据ImageMagick 论坛帖子,使用-type truecolor可能是将图像强制为 24 位的正确方法:

convert "$1" -type truecolor "$1.bmp"
Run Code Online (Sandbox Code Playgroud)