• 締切済み

bmp画像ファイルから最も多く使われている色

bmp画像ファイルから最も多く使われている色を選ぶ方法を探しています。 比較的色の数が少ないbmp形式の画像ファイルから最も多く使われている色を選びたいのですが なにかいい方法やフリーのソフトなどを知っていたら教えていただきたいです。

みんなの回答

  • kon77
  • ベストアンサー率70% (83/117)
回答No.2

少し準備が面倒な方法ですが、複数のソフトとバッチファイルを使った方法を書かせて頂きたいと思います。 最も多く使われている色から順番に、16進数カラーコードでテキスト出力する方法です。 技術者向の質問の様ですので、プログラムやスクリプトに組み込む事を想定されているなら、この方法はGUIのソフトが入りますし、全自動ではないので、向かないかも知れません。 以下に方法を書きたいと思います。 まず、場所はどこでもいいので、新規のフォルダを作成します。  ↓ 次に、下記のソフトをダウンロードし、解凍し、中にある「tg.exe」を、先程作成したフォルダに移動します。 拡張子が見えない設定になっている場合は「.exe」の部分は表示されていないかも知れません。 ■ テーブルグラフィックス Plus! http://www.vector.co.jp/soft/win95/art/se341301.html  ↓ 次に、下記のソフトをダウンロードし、解凍し、中にある「FStr.exe」と「msvcp120.dll」と「msvcr120.dll」を、先程作成したフォルダに移動します。 ■ FStr http://www.vector.co.jp/soft/winnt/util/se497060.html  ↓ 次に、下記のページを開き、「Download」の所にある「Binaries」の右の「Zip」をクリックしてダウンロードページを開きます。 すると、数秒後に自動的にダウンロードが開始されます。開始されない場合は「direct link」をクリックしてダウンロードします。広告はクリックしないで下さい。 ダウンロードしたファイルを解凍し、中にある「bin」フォルダを開き、「sort.exe」と「uniq.exe」を、先程作成したフォルダに移動します。 ■ CoreUtils for Windows http://gnuwin32.sourceforge.net/packages/coreutils.htm  ↓ 次に、下記のページを開き、上記と同じ要領でファイルをダウンロードし、解凍し、中にある「bin」フォルダを開き、「libintl3.dll」を、先程作成したフォルダに移動します。 ■ LibIntl for Windows http://gnuwin32.sourceforge.net/packages/libintl.htm  ↓ 次に、下記のページを開き、上記と同じ要領でファイルをダウンロードし、解凍し、中にある「bin」フォルダを開き、「libiconv2.dll」を、先程作成したフォルダに移動します。 ■ LibIconv for Windows http://gnuwin32.sourceforge.net/packages/libiconv.htm  ↓ これで、ソフトの準備は完了です。上記でファイルを取り出した残りのファイルは、不要なのでフォルダごと削除して下さい。圧縮ファイルも必要ないので削除して下さい。 次に、メモ帳等のテキストエディタを開き、以下の線内の文章を、メモ帳の画面にコピー&ペーストします。 ---------------------------- @echo off echo "■ バッチファイルのあるフォルダに移動します ■" cd "%~dp0" echo "■ ファイルがドロップされなかった場合は終了します ■" set DROP=%~a1 if not "%DROP:~0,1%"=="-" exit echo "■ 環境変数をセットします ■" set OUT=%TEMP%\最も多く使われている色を選ぶ echo "■ 掃除します ■" del /q "%OUT%1.txt" del /q "%OUT%結果.txt" echo "■ 色情報だけを抽出しています・・・ ■" FStr %1 /rei """" "\n" | FStr /si "^#" > "%OUT%1.txt" echo "■ 色が多い順にソートしてカウントしています・・・ ■" sort -r "%OUT%1.txt" | uniq -c | sort -r > "%OUT%結果.txt" echo "■ 結果を表示します ■" start "" "%OUT%結果.txt" ---------------------------- コピー&ペーストしたら、メニューの「ファイル」→「名前を付けて保存」をクリックし、適当な名前を付け、ファイル名の最後にある拡張子を「.bat」(「xxx.bat」等)にし、デスクトップ等の適当な場所に保存します。これがバッチファイルです。 次に、メモ帳を閉じ、先程作成したバッチファイルを、最初に作成したフォルダ内へ移動します。 次に、作成したフォルダ内を開き、「tg.exe」のアイコン上に、色を調査したいビットマップファイルをドラッグ&ドロップします。 ソフトの画面が表示されたら、設定は何も変えず、「変換」をクリックします。 すると、下のプログレスバーが進行しますので、完了したら「終了」をクリックします。すると、画像と同じフォルダにHTMLファイルが出力されます。 次に、出力されたHTMLファイルを、先程作成して移動したバッチファイルのアイコン上にドラッグ&ドロップします。 すると、最も多く使われている色順に結果がテキストで表示されます。 大きなビットマップファイルを処理する場合はそれなりに時間が掛かります。(数十秒~数分程度。) プログラムやスクリプトに組み込みたい場合は、自分はプログラミングが出来ないので分かりませんが、ビットマップの仕様を調べたりして、上記の様な処理を書けば良いのではないでしょうか。 今回ご紹介した「テーブルグラフィックス Plus!」の様に、ビットマップをカラーコードに変換するソフトもあるので、プログラマの方なら、そこからもう少し処理を書けば簡単に一番多い色の算出は出来そうですが、その様な事を目的としたソフトを探すのはなかなか難しいですね。検索ワードを工夫して検索すれば、もしかしたら見付かるかも知れませんが。

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

ImageMagicKのコマンドラインツール identify に-verboseオプションを付けると、色のヒストグラムが出ます。 ただし、使用されている色が256色以下の場合です。 (フォーマットが24bitでも使用されている色が256色以内ならヒストグラムが出ます)

関連するQ&A