mkwall 使用方法



【機能概要】背景イメージ及び前景イメージをランダムに組み合わせて壁紙データを作成します。


【実行形式】

  1. mkwall [-i] [-np] [-b file1 [-bs n[,…]] [-bn n] [-s x:y]] [-f file2 [-fs n[,…]] [-p]] [-bc color] [-g[r] rate] [-v] [input] ouputfile

  2. mkwall [-i] [-np] [-b file1 [-bs n[,…]] [-bn n] [-s x:y]] [-f file2 [-fs n[,…]] [-p]] -n n [-t min] [-bc color] [-g[r] rate] [input] prefix
 上記形式で、1は単独出力用、2は継続的出力用となります。
 両者の違いは、-nのパラメータがあるか否かとなります。


【パラメータ】
 -i
mkwall.iniのサイズ変更に関する指定を無視します。

 -np
選択されたイメージ情報の行番号を表示しないようにします。

 -b file1
背景イメージ情報を記述したファイルを指定します。 背景イメージはランダムに選択されます。

 -bs n[,…]
file1n[,…]行目の背景イメージ情報が選択されます。 選択可能な行数は20個までです。 複数の行を選択した場合、画像ファイルは最初の行のものが選択されます。

 -bn n
背景イメージをn個選択します。

 -f file2
前景イメージ情報を記述したファイルを指定します。 1の場合、前景イメージはランダムに選択されます。

 -fs n[,…]
file2n[,…]行目の前景イメージ情報が選択されます。 選択可能な行数は20個までです。 複数の行を選択した場合、画像ファイルは最初の行のものが選択されます。

 -p
前景のイメージファイル名を出力します。

 -s x:y
画面サイズを指定します。 これを省略した場合には、800*600のサイズとなります。 ただし、横または縦が4000より大きい場合にはエラーとなります。 背景イメージの指定をしない場合には、前景イメージのサイズとなります。

 -n n
n個(nは1以上)の壁紙データを出力します。 ファイル名は次のようになります。    kは1からnまでの数字です。 (壁紙はランダムに選択されることより、同一のものが出力される可能性があります。)
ファイル出力後、それを壁紙として表示します。

当パラメータを指定しない場合には、出力ファイル指定としてoutputfileを指定します。

 -t min
min分毎に壁紙データを作成します。 出力ファイルはサイクリックに使用されます。
例えば、"... -n 2 -t 10 output"と指定した場合、10分毎に次のようにファイルが作成されます。 この場合には、プログラムは終了しないので、終了させる場合には、[Ctrl]+[C]と押下します。

 -bc color
背景色の指定。colorは 'r:g:b'の各10進値で指定します。

 -g[r] rate
壁紙画像の端をぼかします。
-gの場合は矩形にぼかし、-grの場合には角を丸めた矩形にぼかします。
rateはぼかし幅の指定で、これは出力画像の横の長さに対するパーセントで指定します。

 -v
出力画像の表示をします。 ただし、これは後述のmkwall.iniで画像表示プログラムの指定が行われている場合に限ります。

 -Nn=num
整数numを置換パラメータとして設定します。(ただし、nは0〜9)
この値は、イメージ情報ファイルの"$Nn"の値にセットされます。
この設定がされていない場合には、0となります。

 input
イメージファイル変換パラメータ。 これを指定することによって、後述のイメージファイル指定の$inputをこれで置き換えます。 もしこれを指定しない場合には、$input記述は NULLになります。

 outputfile
出力イメージファイル名。出力イメージファイルは Windows BITMAP形式のフルカラーで作成されます。
出力ファイル名のものが既に存在し、次の条件を満たす場合、無条件に上書されます。
(1)"-n"パラメータを指定をしている場合
(2)ファイル名の先頭の3文字が同じ文字の場合
  例えば、出力ファイルが"aaa.bmp"や"d:\images\bbb1.bmp"となる場合。

 prefix
prefixは各出力ファイルの先頭に付加するファイル名の接頭名です。 これとしては、ドライブやパスも含まれます。
prefixは次の形式で指定します。  
  1. [[ドライブ文字:]パス\][ファイル名の接頭名]
  2. [[ドライブ文字:]パス\][ファイル名の接頭名]+$l
  3. [[ドライブ文字:]パス\][ファイル名の接頭名]+$s

上記の出力ファイル名は、それぞれ次のようになります。  

  1. prefixファイル名.bmp
  2. prefix'ファイル名_3桁の行番号.bmp
  3. prefix'ファイル名_3桁のシーケンス番号.bmp

prefix'prefixから"+$l"または"+$s"を除いたもので、ファイル名はパスや拡張子を除いた元の画像のファイル名です。
例えば、prefixが"out"で、入力画像ファイルが"d:\images\file1.jpg"の場合には、"outfile1.bmp"となります。
また、prefixが"c:\tmp\"で、入力画像ファイルが"d:\images\file1.jpg"の場合には、"c:\tmp\file1.bmp"となります。
prefixにパスが指定されていない場合、出力ファイルは実行時のカレントディレクトリに作成されます。


【索引】
 セットアップ

 
1.動作環境設定ファイル

 
2.イメージ指定ファイル
  
2.1 パス指定またはファイル名及び配置情報の指定

 3. イメージ変換指定
  3.1 画像情報出力
   3.1.1 ファイル名、サイズの出力

  3.2 画像の反転・回転
   3.2.1 横方向での反転
   3.2.2 縦方向での反転
   3.2.3 縦・横での反転
   3.2.4 右に90度回転
   3.2.5 左に90度回転

  3.3 色の補正
   3.3.1 赤・緑・青の単純補正
   3.3.2 ガンマの補正
   3.3.3 コントラストの補正
   3.3.4 明度の補正
   3.3.5 彩度の補正
   3.3.6 シャープニング    

  3.4 サイズの変更
   3.4.1 サイズ変更(簡易タイプ)
   3.4.2 サイズ変更(任意倍率)
   3.4.3 サイズ変更(サイズ指定)

  3.5 画像の変更
   3.5.1 画像のカット
   3.5.2 フレーム・グラデーション
   3.5.3 フレーム画像の埋め込み
   3.5.4 絵画的変換

  3.6 文字列の描画
   3.6.1 横方向への文字列の描画
   3.6.2 縦方向への文字列の描画

  3.7 フラクタル図形の描画
   3.7.1 Mandelblot集合の描画
   3.7.2 Julia集合の描画
   3.7.3 Newton法による解の引力圏図の描画
   3.7.4 カオス図形の描画
   3.7.5 キルト図形の描画

  3.8 前景と背景の混合
   3.8.1 前景の混合的ぼかし
   3.8.2 前景の分散的ぼかし

 4. ファイル例
  ・動作環境設定ファイル
  ・画像リストファイル

 5. 実行例
 6. 参考書等
 7. 動作環境


 セットアップ --- セットアップは以下のように行って下さい。
  1. MKWALL.LZHを適当なディレクトリ(現在はフォルダと言われますが)に置き、解凍します。

  2. mkwall.exeとwallchg.exeのファイルはパスの通ったディレクトリに移動します。(mkwall_info.txt及び mkwall.htmは特に場所の指定はありませんが、同じ場所に置いた方が覚えやすくて良いでしょう。)
    これは、Windows95系のOS(95/98/Me)の場合には、"C:\AUTOEXEC.BAT"というファイルの以下の行に記述されています。
      SET PATH=〜
    上記で、各ディレクトリは';'で区切られていることに注意して下さい。
    新たにディレクトリを作って、そこに置くという場合には、そのディレクトリを追加します。

    Windows NT系のOSであるWindows XP等ではこの環境変数の設定は AUTOEXEC.BAT に設定するのではなくて、以下のように行ないます。
     (1)デスクトップの[マイコンピュータ]のアイコンを右クリックして[プロパティ]を選択します。
     (2)[システムのプロパティ]画面の[詳細設定]のタブを開き、[環境変数]をクリックします。
     (3)[環境変数]画面の[システム環境変数]に表示されている「Path」の変数を編集します。

  3. 当プログラムで扱えるのは、ビットマップ形式、JPEG形式、GIF形式、TIFF形式、PNG形式、IMP形式(当プログラム独自圧縮形式)となっています。
     注:
     JPEGファイルの読込みや書込みには、JPEG Groupのフリーのライブラリ(バージョンJPEG-6b)を使用していますが、この形式の中でも一部読込めないフォーマットのものがあります。
     TIFFについては、このフリーのライブラリである"LIBTIFF 3.4"を使用しています。
     PNGについては、このフリーのライブラリである"LIBPNG 1.2.4"を使用しています。

  4. 当プログラムを壁紙作成用に実行させるという場合、この起動を行なうバッチファイルを作成します。
     例えば、10分毎に壁紙データを作成するという場合には、次のように記述したテキストファイルを作ります。(見易くするために敢えて改行しています。)
      c:\tools\mkwall
       -b c:\tools\mkwall_info_back.txt -bn 1
       -f c:\tools\mkwall_info_fwd.txt
       -p -n 2 -t 10 c:\temp\wallpaper

    この例では、当プログラムは"c:\tools"というディレクトリに置いてあるものとし、背景用の画像情報ファイルは"c:\tools\mkwall_info_back.txt"、前景用の画像情報ファイルは"c:\tools\mkwall_info_fwd.txt"としています。
    そして、壁紙データは10分間隔で、"c:\temp"ディレクトリの下に"wallpaper_1.bmp"または"wallpaper_2.bmp"というファイル名で交互に作成されます。

    このテキストファイルを拡張子を"bat"にしたファイル名で、パスの通ったディレクトリに置きます。
    これで、当バッチファイルを起動させることによって、壁紙データが作成されます。

    このバッチファイルを実行させる(ショートカット)アイコンをデスクトップに貼付ければ、そのアイコンをダブルクリックすることでも実行させることができます。

    なお、このアイコンのプロパティの設定は、Windows95系のOSでは次のようにします。

      プログラムタブコマンドラインc:\tools\wallpaper.bat
      作業ディレクトリc:\tools
      実行時の大きさ「通常のウィンドウ」を選択
      プログラム終了時にウィンドウを閉じる通常はチェックします
      メモリタブ各項目「自動」を選択
      スクリーンタブ使い方「ウィンドウ表示」を選択

    Windows NT系のOSであるXPでは、次のようにします。

      ショートカットタブリンク先c:\tools\wallpaper.bat
      作業フォルダc:\tools
      実行時の大きさ通常のウィンドウ

    上記の例では、バッチファイル名を "wallpaper.bat"とし、これが置いてあるディレクトリは"c:\tools"としています。
    このバッチファイルで起動すると、プログラムは永久に実行し続けます。
    これを途中で終了させたいという場合には、当ウィンドウにて [Ctrl]+[C] と押します。

【説明】
 1.動作環境設定ファイル(mkwall_config.ini)
環境設定ファイルには、壁紙イメージのサイズ、名称の定義、画像形式変換の記述ができます。 このファイルはウィンドウズのディレクトリに置いて下さい。 (なお、当ファイル名のものがなかった場合には、mkwall.iniを読込みます。)
名称は、数値などを分かり易いユニークな名称で置き換える為のものです。
環境設定ファイルの記述は次のようにします。(それぞれは省略可能です。)
 
    ;コメント
    [define]
    名称=値
    ……
    [options]
    FI=前景イメージ情報ファイル名
    BI=背景イメージ情報ファイル名
    noPrintLineNumber
    [size]
    x=壁紙の横のサイズ
    y=壁紙の縦のサイズ
    max_size=縦または横のmaxサイズ
    [display]
    ["][ドライブ:][パス\]表示プログラム名["]
    [wallpaper]
    ["][ドライブ:][パス\]wallchg.exe["]
    [resize]
    upper_limit=最大拡大率
    lower_limit=最小縮小率
    expanding_limit=残余率
     
 
[define]
当ファイル内で使用される、値に対する名称の定義をします。
これは、値を変更するのに容易なようにということで設けられているもので、この必要がなければ定義する必要はありません。

・名称=値
名称は先頭文字がアルファベットでなければなりません。 ただしファイル名に対しては適用されません。 値は名称に対して与える文字列を指定します。 例えば、次のように記述します。

    RESIZE=5,5

[options]
mkwall.exeに渡すデフォルトパラメータ、または動作オプションに関する指定です。

・FI=前景イメージ情報ファイル名
前景イメージ情報ファイル名を指定します。
・BI=背景イメージ情報ファイル名
背景イメージ情報ファイル名を指定します。
・noPrintLineNumber
選択されたイメージ情報の行番号を表示しないようにします。

[size]
画像のサイズに関する指定です。

・max_size  
これは画像のサイズ拡大時における縦または横の最大の長さの指定です。 これを省略した場合は、4000(pixel)となります。 この指定の目安としては、画像データに対する次の使用メモリ量を参考にして下さい。

    使用メモリ量 = width * height * 4 (bytes)

widthは横のサイズ、heightは縦のサイズです。 例えば、max_size=1000とした場合には、これは4Mバイトとなります。

[display]
出力画像ファイル表示プログラム名に関する指定です。

・表示プログラム名または変換プログラム名
これは ".exe"の拡張子も指定する必要があります。
ただし、パスやプログラム名にスペースを含む場合、"…"と二重引用符で囲んで下さい。

[wallpaper]
これは、mkwallが出力した画像ファイルをサイクリックに表示させるプログラム(wallchg.exe)に関する指定です。

・wallchg.exe(壁紙サイクリックチェンジャー)
画像をサイクリックに出力する場合(-n指定の場合)、最初の画像が出力された時点で、このプログラムが実行されます。 このプログラムが指定されていない場合には、mkwallが壁紙を直接変更します。

wallchgが mkwallから呼び出されたとき、これはタスクバーに格納されます。

mkwallの終了時には、終了メッーセージを wallchgに送ります。
すると、以下のメッセージを表示したダイアログが現れます。

    mkwall ended,
    and so does it close the window?

これは、このプログラムを終了させてもよいですかというメッセージです。
ただし、これは作業ウィンドウを直接クローズした場合には表示されません。

[resize]
任意の倍率または長さ指定のリサイズに関する指定です。

・upper_limit
これは resizeの縦または横の長さ指定での最大拡大率の指定です。 最大拡大率はパーセント(>100)で指定します。例えば、150ならば 1.5倍までとなります。

・lower_limit
これは resizeの縦または横の長さ指定での最小縮小率の指定です。 最小縮小率はパーセント(<100)で指定します。例えば、50ならば 0.5倍までとなります。

・expanding_limit
これは resizeの縦または横の長さ指定で、指定されない方の壁紙サイズに対する残余率が少ない場合に、壁紙のサイズに拡張する指定です。
残余率rというのは、次の式のものです。

    r = {(X-x)/X}*100
    r = {(Y-y)/Y}*100

Xは壁紙の横のサイズ、Yは壁紙の縦のサイズ、xは画像の横のサイズ、yは画像縦のサイズです。
ただし、以上は前景画像のリサイズに対してのみとなります。



 2.イメージ指定ファイル
イメージ指定ファイルはパス指定またはファイル名(またはディレクトリ名)及び配置情報とイメージ変換情報からなります。
ファイル名及び配置情報と各イメージ変換情報はセミコロンで区切ります。 ファイル名及び配置情報や各イメージ変換情報のパラメータはカンマで区切ります。

ファイル名には、次のワイルドカードや"$input"を使用できます。

    *任意の文字列
    ?任意の1文字
    $input[input]パラメータ

例.c:\images\*.jpg

 2.1 パス指定またはファイル名及び配置情報の指定
(1)共通パス指定
 共通的に使用するパス指定は次のように指定します。
    PATH=[compath]
 これは、次の共通パス指定が現われるまで、以降のファイル名またはディレクトリ名のパスに付加されます。 もちろん、ファイル名またはディレクトリ名にパスを直接付加することもできます。

(2)ファイル名及び配置情報
 ファイル名及び配置情報は次の形式で指定します。

    path,sub_dir, pos_x,pos_y,image_x, image_y, weight

 以下、上記パラメータについて説明します。

    pathはファイル名またはディレクトリ名(フォルダ名)のパスです。

    共通的パス指定がされている場合、実際のパスは次になります。

      compath\path

    sub_dirはpathがディレクトリの場合サブ・ディレクトリも含めるかどうかの指定で、これが1の場合にはサブ・ディレクトリも含めます。

    pos_xは配置x座標です。 これに-1を指定した場合には、イメージが画面の横方向で中央になるように配置します。

    pos_yは配置y座標です。 これに-1を指定した場合には、イメージが画面の縦方向で中央になるように配置します。

    iamge_xはイメージ開始x座標です。 これに-1を指定した場合には、イメージ全体が画面の横方向で中央になるように開始位置を決定します。

    iamge_yはイメージ開始y座標です。
    これに-1を指定した場合には、イメージ全体が画面の縦方向で中央になるように開始位置を決定します。
    イメージ開始位置を指定した場合、元の画像はその位置から切り取られます。 したがって、イメージの編集での位置指定は切り取られた画像からの指定となります。

    weightはランダム選択における重み(1000未満の値)を指定します。省略時には 1となります。
    ただしランダム選択は、以下の順序で行われます。

    1. ディレクトリ指定またはワイルドカード指定のものを均一な重みで選択し、それに該当する画像の中からランダムに選択します。
    2. 上記によって全ての画像数が把握された時点で、重みによるランダム選択がなされます。

【注意点】
  1. 行頭文字が '#'の場合には、その行はコメント行とみなされます。
  2. 空白行は無視されます。
  3. パラメータはファイル名を除き省略できます。それらを省略した場合には 0となります。 ただし、数値0の解釈はそれぞれ異なることがあります。
    例えば、"abc.bmp,10,20"と指定した場合、イメージ開始x座標,イメージ開始y座標は 0とみなされます。
    また、あるパラメータ以降を全て省略する場合にはそれらのフィールド自体を省略できます。
  4. 座標(位置)はピクセル値(ドット値)で指定します。これは左上の座標が(0,0)となります。
  5. pos_x, pox_yは、背景イメージがない場合や複数の背景イメージ選択時の背景イメージに対しては無効となります。



 3. イメージ変換指定
イメージ変換機能は次のように分類されます。   
  1. 画像情報出力   
  2. 画像の反転・回転   
  3. 色の補正   
  4. サイズの変更  
  5. 画像の変更   
  6. 文字列の描画   
  7. フラクタル画像の描画   
  8. 前景と背景の混合

イメージ変換指定の基本的形式は次のようになります。
    "イメージ変換機能番号、変換種別番号,個別パラメータ群"
   

 3.1 画像情報出力
画像情報出力の種別としては次のものがあります。   
  1. ファイル名、サイズの出力

 3.1.1 ファイル名、サイズの出力
選択されたイメージファイルのファイル名および画像のサイズを出力します。
これは次の形式で指定します。
    1,0

 3.2 画像の反転・回転
画像の反転・回転の種別としては、以下のものがあります。

  1. 横方向での反転   
  2. 縦方向での反転   
  3. 縦・横の反転   
  4. 左に90度回転   
  5. 右に90度回転

 3.2.1 横方向での反転
横方向で画像を反転させます。
これは次の形式で指定します。
    2,0

 3.2.2 縦方向での反転
縦方向で画像を反転させます。
これは次の形式で指定します。
    2,1

 3.2.3 縦・横での反転
縦方向および横方向で画像を反転させます。
これは次の形式で指定します。
    2,2

 3.2.4 右に90度回転
右に90度回転させます。
これは次の形式で指定します。
    2,3

 3.2.5 左に90度回転
左に90度回転させます。
これは次の形式で指定します。
    2,4

 3.3 色の補正
色の補正機能としては、以下のものがあります。

  1. 赤・緑・青の補正
  2. ガンマの補正
  3. コントラストの補正
  4. 明度の補正
  5. 彩度の補正
  6. シャープニング

 3.3.1 赤・緑・青の補正
赤・緑・青のそれぞれの値を増減させます。
これは次の形式で指定します。
    3,0,r,g,b

r,g,bはそれぞれ赤、緑、青に対する増減値の指定です。

 3.3.2 ガンマの補正
ガンマ補正は次の形式で指定します。
    3,1,rate

rateはこの補正度合の係数(-100〜100)です。

注.ガンマ補正について
 ガンマ補正というのは、表示装置の特性に合わせて輝度となる各色の階調値を補正するものです。 例えば、ブラウン管の場合には、輝度が出力値と線形にならなく、これは2次曲線のように湾曲してしまいます。 つまり、小さい値はさらに輝度が低下してしまい、画面が暗くなってしまいます。 この場合には、ガンマ値を上げるようにします。
 また、画像がブラウン管の特性に合わせて作られている場合、輝度が出力値とほぼ線形に増加するような液晶の表示装置を使用している場合には、本来暗い部分が明るくなってしまい、締まりのない画像となってしまいます。 この場合には、ガンマ値を下げるようにします。

 3.3.3 コントラストの補正
コントラストの補正をします。
これは次の形式で指定します。
    3,2,rate

rateはこの補正度合の係数(-100〜100)です。

 3.3.4 明度の補正
明度の補正をします。
これは次の形式で指定します。
    3,3,rate

rateはこの補正度合の係数(-100〜100)です。

 3.3.5 彩度の補正
彩度の補正をします。すなわち色の鮮やかさの補正をします。
これは次の形式で指定します。
    3,4,rate
rateはこの補正度合の係数(-100〜100)です。

 3.3.6 シャープニング
画像をシャープまたはソフトにします。
シャープニングは次の形式で指定します。
    3,5,rate,[radius],[threshold]

rateはシャープニングの度合(-50〜100)、radiusは平均化を行なう半径(1〜10)、thresholdは補正対象のしきい値の指定です。
rateは単に100分率にしたものであり、2,3の差ではあまり変化がありません。 それにマイナスを指定した場合には、ソフトな画像となります。

 3.4 サイズの変更
サイズの変更の種別としては次のものがあります。

  1. サイズ変更(簡易タイプ)   
  2. サイズ変更(任意倍率)   
  3. サイズ変更(サイズ指定)

 3.4.1 サイズ変更(簡易タイプ)
特定倍率での縮小または拡大を行ないます。
これは次の形式で指定します。
            
    1.4,1,0… 1/2に縮小(平滑的)
    2.4,1,1… 2/3に縮小(平滑的)
    3.4,1,2… 3/2倍に拡大(補間的)
    4.4,1,3… 2倍に拡大(補間的)

このサイズ変更は簡易処理で行なうものなので、処理時間を短くしたいときに使用するのに向いています。

 3.4.2 サイズ変更(任意倍率)
任意の倍率でサイズ変換をします。
これは次の形式で指定します。

    1.4,2,0,x_rate[,y_rate]
    2.4,2,1,x_rate[,y_rate]

x_rateは横方向の倍率(%)で、y_rateは縦方向の倍率(%)です。
y_rateを省略した場合、x_rateと同じであるとみなします。

1は低精度のもので、2は高精度のものとなります。

 3.4.3 サイズ変更(サイズ指定)
縦または横のサイズが指定サイズになるようにサイズ変換します。
または縦・横が指定サイズになるように経感します。
ただし、画像サイズの縦または横が10ピクセル未満になる場合にはエラーとなります。
指定サイズ変換は次の形式で指定します。

    1.4,3,0,[width],[height]
    2.4,3,1,[width],[height]
    3.4,3,2,[width],[height]
    4.4,3,3,[width],[height]
    5.4,3,4,[width],[height]
    6.4,3,5,[width],[height]

widthは横のサイズ、heightは縦のサイズです。
ただしwidth, heightが 0の場合にはエラーになります。

12は幅および高さを指定サイズに変更にします。
34は幅および高さをそれぞれ x,yを超えないようにします。
56は幅と高さをそれぞれ x,y以上となるようにします。
また、135は低精度のもので、246は高精度のものになります

 3.5 画像の変更
画像の変更の種別としては次のものがあります。
  1. 画像のカット
  2. フレーム・グラデーション
  3. フレーム画像の埋め込み

 3.5.1 画像のカット
画像を指定サイズにカットします。
これは次の形式で指定します。
    1.5,0,0,width,height
    2.5,0,1,width,height

1は左上を起点にしてカットします。 2は画像の中心を中心にしてカットします。
widthは横の長さ、heightは縦の長さです。

 3.5.2 フレーム・グラデーション
枠をぼかします。
これは次の形式で指定します。
    1.5,1,0,width[,color]
    2.5,1,1,width[,color]

1は矩形にぼかし、2は角を丸めてぼかします。
widthは枠の幅のレート指定で、これは画像の縦・横の短い方の長さに対するパーセント(小数点可)を指定します。
colorは背景の色を指定します。これを省略した場合、デスクトップカラーとなります。

 3.5.3 フレーム画像の埋め込み
枠画像を重ね合わせます。
これは次の形式で指定します。
    1.5,2,0,"frame_file"[,color]
    2.5,2,1,"frame_file"[,color]

1はフレーム画像を埋め込む画像のサイズに変更してから埋め込みます。
2はフレーム画像を埋め込む画像のサイズを縦・横比を保ったまま拡大(縮小)して埋め込みます。 つまり、こちらはフレーム画像を拡大した後、足りない部分の補間または不要部分の除去を行なってサイズ変更します。 なお、この拡大率は画像の対角線比となります。

frame_fileは枠となる画像ファイル、colorは枠以外の部分の色を指定します。
colorを省略した場合、これは黒(0:0:0)となります。

 3.5.4 絵画的変換
画像を絵画風に変換します。 これは次の形式で指定します。

    1.5,3,0,rate,[radius],[threshold],[hue_limit],[emphasis]
    2.5,3,1,rate,[radius],[threshold],[hue_limit],[emphasis]
    4.5,3,2,rate,[radius],[threshold],[hue_limit],[emphasis]

1は水彩画タイプ、2はエッチンググラス風タイプ、3はモザイク風タイプです。 (2は近傍のピクセル同士が微妙に異なる場合に効果的となります。)
rateはぼかしの度合(0〜100%)、radiusは周辺との平均化を行なう「半径」、thresholdは変更対象ピクセルのしきい値(0〜100%)の指定です。 (radiusとthresholdは、シャープニングの場合と同じ意味のものです。)

hue_limitは、周辺のピクセルの平均値をとる際の色相の許容度を指定します。 つまり、これは似た色のもののみに制限することによって、色の変化を抑制するものです。 これが0の場合には、近傍の全てのピクセルが選択されます。
この値を低くすることによって色の滲みを低減させることができます。 特にこれはエッチンググラス風の変換に対して効果的となります。

emphasisは、変更対象ピクセルにおいて、1の場合には明るい部分の強調度合、2の場合には輪郭強調度合、3の場合には明暗強調のパラメータとなります。 これは0〜10までの値を指定します。 省略した場合、これは0になります。
なお、3の場合を除き、rateよりもこちらの方が強く効きます。 特に1には水彩画変換というよりは、シャープ化という変換に近くなります。

注.3は明暗効果をつけるためだけのものなので、色については彩度を上げたりして調整する必要があります。

 3.6 文字列の描画
文字の描画の種別としては、次のものがあります。
  1. 横方向への文字列の描画
  2. 縦方向への文字列の描画

 3.6.1 横方向への文字列の描画
横方向に文字列を描画します。
これは次の形式で指定します。
    6,0,x,y,string,[font_type],[color],[width],[spacing],[alignment]

"x,y"は文字列の中心線の開始位置、"srting"は描画する文字列,font_typeはフォントの種別、colorは文字列の色、widthは文字列描画領域の幅、spacingは文字の間隔、alignmentは文字列の配置の指定です。

stringは、次のように指定します。

    "文字列"

文字列の中に'"'を記述する場合には、'\"'とします。
文字列の中には、下記の制御コード(大文字と小文字の区別はありません)を記述できます。
    $filename… ファイル名(横表示の場合)
    0xhh … 16進コード(hh)の文字を表示します。
     ただし、Symbolフォント, Wingdingsフォントの場合。
     なお文字コード表は0x20から始まっていることに注意して下さい。

文字列が文字列描画領域に入り切らない場合には、最後が"..."と表示されます。

font_typeは下記のものを指定します。

    0… FixedSysフォント(MSゴシックとほぼ同じ)
    2… Symbolフォント(ギリシャ文字の小文字のフォントは少し変えてあります)
    3… Arialフォント
    4… Arial Narrowフォント
    5… Book Antiquaフォント
    6… Bookman Old Styleフォント
    7… Centuryフォント
    8… Comic Suns MSフォント
    9… Curierフォント
    10… Curier Newフォント
    11… Garamondフォント
    12… Haettenshweilerフォント
    13… Impactフォント
    14… Impact(like)フォント
    15… Modernフォント
    16… MS Sans Serifフォント
    17… MS Serifフォント
    18… Times New Romanフォント
    19… Wingdingsフォント

FixedSysフォントの場合には、漢字を使用できます。
Symbolフォントの場合、小文字はBook Antiquaの字体のものが表示され、全角のシンボル文字の場合または"0xhh"の場合、Symbolの字体が表示されます。 シンボル文字以外の全角文字は、FixedSysの字体で表示されます。

colorは、次のいずれかで指定します。

    r:g:b
    "reverse"

"reverse"と指定した場合には、元のピクセルの色と反対の色となります。
colorを省略した場合には、黒となります。

widthは文字列描画領域の幅をピクセル数で指定します。 これを省略した場合には、画像データの右端までとなります。
もし描画領域に文字が入りきらない場合には、その文字は描画されません。

spacingは文字間の間隔をピクセル数で指定します。
この形式は、次のようになっています。

    [+]n

nは文字間の間隔(直前の文字の先頭から当該文字の先頭まで)をピクセル数で指定します。
'+'を付加した場合には、直前の文字の最後からの相対間隔となります。 ただし、このことはデフォルトの文字間隔に加えてという意味です。
spacingを省略した場合には、"+0"として表示されます。

alignmentは下記のものを指定します。

    0… 左寄せ
    1… 中央
    2… 右寄せ

 3.6.2 縦方向への文字列の描画
縦方向に文字列を描画します。
これは次の形式で指定します。
    6,1,x,y,string,[font_type],[color],[width],[spacing],[alignment],[fontRotation]

"x,y"は文字列の中心線の開始位置、"srting"は描画する文字列,font_typeはフォントの種別、colorは文字列の色、spacingは文字の間隔、widthは文字列描画領域の長さ、alignmentぱ文字列の配置、fontRotationはフォントの回転指定です。
各パラメータの意味は、横方向への文字列の描画とほぼ同じです。ただし、文字列の中に、"$filename"や上添字、下添字などの制御コードは書けません。

alignmentは下記のものを指定します。
    0… 上寄せ
    1… 中央
    2… 下寄せ

fontRotationは下記のものを指定します。

    0… フォントの回転なし
    1… フォントを右に90°回転
    2… フォントを左に90°回転(さらに文字列は逆の並びになります)

注.文字列を横方向に描画する場合、文字列が描画領域を超える場合には、"..."と表示するのですが、縦に描画する場合にはこの変換は行われません。

 3.7 フラクタル図形の描画
フラクタル図形の描画機能としては次のものがあります。
  1. マンデルブロ集合の描画
  2. ジュリア集合の描画
  3. Newton法による解の引力圏図の描画
  4. カオス図形の描画
  5. キルト図形の描画

 3.7.1 Mandelblot集合の描画
マンデルブロ集合の図形を描画します。
これは次の形式で指定します。
    7,1,DB=filename,[ID=data_id],[color_pattern],[brightness]

マンデルブロ集合描画パラメータのDBであるfilenameに登録されている、data_idのマンデルブロ図形を表示します。 data_idを省略した場合には、ランダムに選択されます。

color_patternはカラーセットの番号の指定で、これを指定した場合、DBデータのカラーセットを置き換えます。

brightnessは描画の明るさの指定で、1以下の値を設定します。

なお、当DBファイル及び他のフラクタル図形のDBファイルは、imgEditというソフトのアーカイブファイル(imgEdit.lzh)に入っています。

 描画計算にはかなり時間がかかる場合があり、このことに対処するために、この処理の中断ができるようにしました。 これは、計算時に[Ctrl]+[C]と押下することによってできます。この時以外に行なった場合には、プログラムが終了します。

 3.7.2 Julia集合の描画
ジュリア集合の図形を描画します。
これは次の形式で指定します。
    7,2,DB=filename",[ID=data_id],[color_pattern],[brightness]

ジュリア集合描画パラメータのDBであるfilenameに登録されている、data_idのジュリア図形を描画します。 data_idを省略した場合には、ランダムに選択されます。

 3.7.3 Newton法による解の引力圏図の描画
Newton法による引力圏図の描画は次の形式で指定します。
    7,3,DB=filename,[ID=data_id],[color_pattern],[brightness]

この描画パラメータのDBであるfilenameの中の、データIDがdata_idとなっているデータのパラメータより、引力圏図形を描画します。 data_idを省略した場合には、ランダムに選択されます。

 3.7.4 カオス図形の描画
カオスな図形を描画します。これは次の形式で指定します。
    7,4,DB=filename,[ID=data_id],[color_pattern],[brightness]

この描画パラメータのDBであるfilenameの中の、データIDがdata_idとなっているデータのパラメータより、カオス図形を描画します。 data_idを省略した場合には、ランダムに選択されます。

 3.7.5 キルト図形の描画
キルト図形を描画します。これは次の形式で指定します。
    7,5,DB=filename,[ID=data_id],[color_pattern],[brightness]

この描画パラメータのDBであるfilenameの中の、データIDがdata_idとなっているデータのパラメータより、キルト図形を描画します。 data_idを省略した場合には、ランダムに選択されます。

 3.8 前景と背景の混合
背景と前景との混合の機能としては、以下のものがあります。
      
  1. 前景の混合的ぼかし   
  2. 前景の分散的ぼかし

 3.8.1 前景の混合的ぼかし
前景の枠部分を背景の色と混合してぼかします。これは次の形式で指定します。
    1.8,1,0,width[,rate]
    2.8,1,1,width[,rate]

1は矩形にぼかし、2は角を丸めてぼかします。
widthは枠の幅のレート指定で、これは画像の縦・横の短い方の長さに対するパーセント(小数点可)を指定します。
rateは枠以外の部分で、背景に対する前景の重ね合わせ率(1〜100)の指定です。 これを省略した場合、rateは100となります。

 3.8.2 前景の分散的ぼかし
前景の枠部分を背景と適度に入れ交ぜてぼかします。
これは次の形式で指定します。
    1.8,2,0,width[,rate]
    2.8,2,1,width[,rate]

1は矩形にぼかし、2は角を丸めてぼかします。
widthは枠の幅のレート指定で、これは画像の縦・横の短い方の長さに対するパーセント(小数点可)を指定します。
rateは枠以外の部分で、背景に対する前景の重ね合わせ率(1〜100)の指定です。 これを省略した場合、rateは100となります。


【実行例】
・mkwall -b backInfo.txt output.bmp
・mkwall -f forwardInfo.txt -v output.bmp
出力ファイルの画像表示も行います。
ただしこれは動作環境設定ファイルでその設定をする必要があります。
・mkwall -b back.txt -f fwd.txt -s 800:600 output.bmp
壁紙のサイズを800×600ドットとします。
・mkwall -b back.txt -bn 2 -f fwd.txt -n 2 -t 10 c:\tmp\wallpaper
10分毎にwallpaper_1.bmpまたはwallpaper_2.bmpで交互に出力し、それを壁紙として表示します。
また、背景用の画像は2個選択して交互に並べます。


【参考書等】

  1. フラクタル図形の描画については、以下の本を参考にしました。
    ・フラクタル紀行 芹沢浩著 森北出版
    ・超越関数の世界 芹沢浩著 森北出版
    ・フラクタル/カオス2 佐藤幸悦著 ラッセル社
    ・CによるカオスCG 川上博/上田哲史著 サイエンス社
    ・対称性の破れが世界を創る I.スチュワート/M.ゴルビツキー著 白揚社
    ・続 C言語による3Dグラフィックス入門 石井繁夫著 技術評論社


【動作環境】

 動作環境としては以下となります。
   OS   Windows95/98/Me/XPなど


ホームページへ