ImageMagickでR,G,BのRとBを入れ替える

手元に色のおかしい bmp 画像があった。どうも R,G,B が入れ替わっているらしい。
ImageMagick の convert コマンドで何とかできないかとググってみたら、↓このページを見つけた。

 cf. ImageMagickを使ったグレイスケール、反転、RGB入れ替えについて – Qiita

このページによると、いったん R,G,B それぞれの画像に分解してから、順番を入れ替えて合成すればいいようだ。詳しくは書かないけど、中間ファイルを作らなきゃいけないし、convert コマンドのオプション指定も難しい(詳しくは理解してない)。それでも試してみると、どうやら R と B を入れ替えると正常らしい色に変換できた。
とはいえ、画像ファイルは千個以上もあっていちいち手でやってられないので、スクリプト(バッチファイル)を書いた。
一つは、色のおかしい bmp ファイルを正常な png ファイルに変換するスクリプト。

@echo off
convert %1 -fX R img_R.png
convert %1 -fX G img_G.png
convert %1 -fX B img_B.png
convert ( img_B.png img_G.png img_R.png ) -set clorspace RGB -combine -set colorspace sRGB img_BGR.png
convert -flip img_BGR.png %2
del img_*.png

もう一つは、上記のスクリプトをカレントディレクトリの全 bmp ファイルに適用するスクリプト。

for %%I in (*.bmp) do convertBGR %%I %%~nI.png

これで全部正常になった。