日本語プログラミング「なでしこ」

新JPUG会議室 No.13より。

正方形の画像を9分割し、ランダムに並べ替えてくれるようなプラグインはないでしょうか?
上のサンプルで左のイメージを右側のような格好へ加工する際に使いたいのです。

う〜ん……プラグインという事だと見つかりません……。大抵、こういう決められた処理を何回もする時、私の場合は「ひまわり」を使って簡単なバッチ処理を作っておくから……

……と、書いて、そういえば最近「ひまわり」を使っていないし、サイトも見に行っていないなぁ……なんて思い、サイトを覗いてみたら、後継ソフトの「なでしこ」の正式版がつい先日(2月17日)リリースされた所でした

そんなわけで、早速DL。……へぇ……結構色々変更してあるなぁ。言語仕様からして変更してあるのかぁ……。

そんなわけで、練習がてら、上の「画像分割して、シャッフルして、保存する」プログラム(……というかバッチ処理)を「なでしこ」で作ってみる。途中で一回詰まったのは内緒だぞ(笑)

元画像とはイメージ。加工画像とはイメージ。

「画像ファイル|*.jpg;*.png」のファイル選択

元画像の画像はそれ。加工画像の画像はそれ。

加算X=INT((元画像のW)/3)
加算Y=INT((元画像のH)/3)

X=0。Y=0。I=0。

3回
  3回
    座標X¥I=X
    座標Y¥I=Y
    X=X+加算X
        I=I+1
    
  X=0
  Y=Y+加算Y

20回
  R1は9の乱数。R2は9の乱数。
  元画像の(座標X¥R1)、(座標Y¥R1)、加算X、加算Yを加工画像の(座標X¥R2)、(座標Y¥R2)へ画像部分コピー。
  元画像の(座標X¥R2)、(座標Y¥R2)、加算X、加算Yを加工画像の(座標X¥R1)、(座標Y¥R1)へ画像部分コピー。
  加工画像を元画像の0,0へ画像コピー。

加工画像を「分割画像.jpg」へ画像保存。

終了。

実行すると、ファイル選択画面が出るので、処理をしたい画像を選ぶと画像を分割・シャッフル・結合して「分割画像.jpg」というファイル名で保存して終了します。こんな感じ。

分割画像

但し、このプログラムは「3で割り切れないサイズの画像処理」をまだしていないから、縦横のピクセル数が3の倍数でない時は、右端と下に1〜2ドットの隙間が出来る(笑)気になるなら、このプログラムに「サイズを3で割って出た余りの分だけサイズを縮めてあげる処理」……を加えれば大丈夫。多分、2〜3行追加すればOK。

……まあ、単純なプログラムなわけですが、逆に言えばたったこれだけの文で上の面倒な処理が自動化出来ちゃうんだから、こういう使い方をする時にはやっぱり「ひまわり」(と、「なでしこ」)は便利です。