0
したがって、多くのPNGをグレースケールからRGBに変換したいと考えています。this questionPNGのインプレースバッチをグレースケールからRGBに変換するにはどうすればよいですか?
ただし、指定されたコマンドはPNGでは機能しません。さらに、それはconvert
であり、私は画像内のでmogrify
を使用する必要があります。これをどうすれば使えますか?
したがって、多くのPNGをグレースケールからRGBに変換したいと考えています。this questionPNGのインプレースバッチをグレースケールからRGBに変換するにはどうすればよいですか?
ただし、指定されたコマンドはPNGでは機能しません。さらに、それはconvert
であり、私は画像内のでmogrify
を使用する必要があります。これをどうすれば使えますか?
これはimagemagicのa bugとa featureです。 機能一部引用すると:
をそれはあなたがしたい場合は、ファイルは、そのため以前PNG24またはPNG32
た場合でも、画像コンテンツに基づいてImageMagickのはPNG8 に設定しようと判明します最終的に画像あたり3チャンネルで終了する場合は、png24
フォーマット(3
チャンネルx
8
ビット/チャンネル)を設定する必要があります。
だから、解決策は以下のとおりです。
# for a single image, with a different output
convert input.png -type TrueColor png24:output.png
# for a batch of images, IN_PLACE !!! BE VERY CAREFUL
mogrify -define png:format=png24 -type TrueColor *.png
それはmogrify
は、元の画像を復元する方法はありませんように、これはあなたが望むものであることを確認する場所に彼らにを修正することを認識することが必須です。
PNGはsRGB(CMYKなし)のみをサポートしているため、-colorspace RGBを追加すると、イメージは非線形の色sRGBではなく線形の色になります。 RGBとsRGBが入れ替わった非常に古いIMバージョンを使用していない限り、私はそれを削除します。また、適切なIM構文は、設定や演算子を提供する前にラスタ入力を読み込みます。ですから、convertコマンドでまず入力したPNGを読み込みます。 – fmw42
@ fmw42アドバイスをいただきありがとうございます!なぜ「眠く」がとても遅いのか? 18枚の画像で約32秒かかります。私がフォルダを見ると、プロセスで中間ファイルが作成されているのがわかります。たぶん小さなメモリバッファを使用し、イメージが大きい場合は、メモリを使用できるのに、ディスクを使用します。 –
'-path/some/where/else'を設定することで、ファイルがインプレースで変更されるのを避けることができます。 –