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

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

我正在编写一个包装器 Bash 脚本辅助系统使其更易于使用。该程序将图像转换为声音,反之亦然,但它只接受 24 位 BMP 图像,到目前为止我只能使用 GIMP 生成这些图像。

我正在寻找一种方法将任何给定图像转换为合适的 BMP 文件,以便 ARSS 可以处理它。我尝试了 ImageMagic's 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 导出时得到了一个正确的文件:

在此输入图像描述

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

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

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

答案1

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

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

相关内容