mieki256's diary



2015/02/15() [n年前の日記]

#1 [cg_tools] ImageMagickで減色の実験

キャラクター仮画像のファイルサイズが大き過ぎるので、何かしら減色処理をして減らせないかなと試行錯誤中。

ひとまず、ImageMagick を使って実験。環境は、Windows7 x64 + ImageMagick 6.8.7-8 Q16 x86。

以下を参考にしながらテスト。

_Threshold Dithering Methods -- Quantization -- IM v6 Examples
_Ordered Dither using Uniform Color Levels -- Quantization -- IM v6 Examples
_Color Quantization and Transparency -- Quantization -- IM v6 Examples

以下の指定で、フルカラー画像をRGBA4444に ―― 4096色の範囲に収められないか実験。
mogrify -ordered-dither threshold,16 *.png

-ordered-dither ○○○ で、ディザのかけ方を変えられる。
アルファチャンネルの2値化も試してみたけど、輪郭が凸凹した状態になってしまって悩んだり。DOS窓上で、コマンドを以下のように直接打つと、期待通りの結果になるのだけど。
mogrify -channel A -threshold 50% *.png
コレをbatファイルに書いても動作してくれない。

原因が分かった。batファイルの中で「50%」と記述しただけでは「%」が無くなってしまう。batファイル中で「%」をコマンド等に渡したい場合は、「%%」と書かないといけない。コレ、前にもハマったような…。

とりあえず、以下のようなbatファイルを書いて、アルファチャンネルの2値化と4096色化をしてみたり。
@echo off
@rem アルファチャンネルを50%で2値化
@rem RGB444に変更

SET CVT=C:\Prog\ImageMagick-6.8.7-Q16\mogrify.exe

for /d %%a in (.\*) do (
echo convert %%a\*.png
cd %%a
%CVT% -channel A -threshold 50%% *.png
@rem %CVT% -channel A -ordered-dither checks *.png

@rem %CVT% -ordered-dither threshold,16 *.png
%CVT% -ordered-dither checks,16 *.png
cd ..
)
for /d %%a in (.\*) do ( 〜 ) で、カレントディレクトリ内のサブフォルダ群に対して処理をする。この場合、%%a にサブフォルダ名が入る。

_CPシステムII - Wikipedia によると、「最大同時発色数: 4096色」とあるので…。昔風の2Dゲームを作る場合は、4096色(RGB各チャンネルが4bit分)あれば間に合うんじゃないかなと。

ポスタライズの動作がよく分からず。 :

ポスタライズって、てっきり、RGBの上位何ビットだけを残すか、という処理かと思ってたけど、ImageMagick で試してみたらどうもそういう感じに見えなくて。

_Quantization -- IM v6 Examples を眺めてみたら、
  • 2 を指定すると 8色。
  • 3 を指定すると 27色。
  • 4 を指定すると 64色。
  • 5 を指定すると 125色。
  • 6 を指定すると 216色。
に変換すると書いてある、ような。規則性が見えない…。どうも Netscape がどうとか書いてあるように見えるので、ビット数云々で出力する色数を決めてるわけではないのかもしれないけどよく分からない。

手元で試してみたら、盛大に画像が壊れたというか、妙な場所に大きい四角形のグレー部分ができてしまった。このあたり、仕様なのかバグなのか、よく分からない。

以上です。

過去ログ表示

Prev - 2015/02 - Next
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project