Command-Line

如何在命令行中將圖像轉換為 24 位 BMP?

  • September 23, 2017

我正在為ARSS編寫一個包裝 Bash 腳本以使其更易於使用。該程序將圖像轉換為聲音,反之亦然,但它只接受 24 位 BMP 圖像,目前我只能使用 GIMP 生成。

我正在尋找一種將任何給定圖像轉換為合適的 BMP 文件的方法,以便 ARSS 可以處理它。我嘗試了 ImageMagic 的convert,但我無法獲得 24 位色深。

這是我的腳本:

#!/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,但我什至不知道我是否需要它。

也許只是一些我不知道的簡單事情?

根據ImageMagick 論壇文章,使用-type truecolor可能是將圖像強制為 24 位的正確方法:

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

引用自:https://unix.stackexchange.com/questions/394003