「Image to Excel」というWebアプリが窓の杜で紹介されていました
ときどき画像ファイルを「Microsoft Excel」ファイルに変換したいなぁって思うことはありませんか? ありますよね!? そんな人に朗報です!
作者曰く、
画像をExcelファイル(.xlsx)に変換するクソアプリ「Image to Excel」を公開しました。 セル1つ1つの背景色を変えることで画像を表現しています。
これをなでしこ1で作ってみたいと思います!
要件
画像を受け取り、リサイズする。画素を1つ1つ読み取って、エクセルのセルに着色していく。
これをプログラムでやるのが簡単か否か?
…簡単です! 日本語プログラム言語「なでしこ」なら! 外部ライブラリを取り込まずに20行程度で! 実現できるんです!
完成品
以下はなでしこ1のプログラムです。
cw=100
ch=100
作業とはイメージ
その可視はオフ
「母艦に画像ファイルをドロップしてね」と表示
母艦のファイルドロップ許可はオン
母艦のファイルドロップした時は~
作業の画像は母艦のドロップファイル
作業をcw,chで画像比率変えずリサイズ
エクセル起動
エクセル新規ブック
エクセル全選択
3にエクセル選択行高さ設定
0.3にエクセル選択列幅設定
xを1から作業の幅まで繰り返す
yを1から作業の高さまで繰り返す
y,xのエクセルセル名取得して、それをエクセル選択
作業のx-1,y-1から画像色取得して、それにエクセル着色
実行結果
実行すると「母艦に画像ファイルをドロップしてね」と書かれたウィンドウが現れます。
画像をドロップするとエクセルが起動してセルに色を塗ります。
以下はマリオRPGのサイトからとってきた画像を使用した例
できました☆
解説
画像のロード準備
以下の部分は画像を受け取る準備です。
作業とはイメージ
はイメージ部品の作成です。
画像を設定すると自動でロードしてくれます。
母艦
と言うのはメインウィンドウのこと。
今回はドロップした画像ファイルをエクセルに転記していく方針です。
画像比率変えずリサイズ
はなでしこの標準命令です。
ここではcw=100,ch=100
におさまるようにリサイズしています。
cw=100
ch=100
作業とはイメージ
その可視はオフ
「母艦に画像ファイルをドロップしてね」と表示
母艦のファイルドロップ許可はオン
母艦のファイルドロップした時は~
作業の画像は母艦のドロップファイル
作業をcw,chで画像比率変えずリサイズ
エクセル方眼紙の作成
続く処理はエクセル方眼紙の作成です。
書いてあることは謎の手順書…ではなく、エクセルを操作する命令です。 いずれもなでしこの標準命令です。
エクセル起動
エクセル新規ブック
エクセル全選択
3にエクセル選択行高さ設定
0.3にエクセル選択列幅設定
色の転記
続く以下の処理は色の転記です。多少プログラムらしい姿ですね。
行,列を数値で指定して"A1"形式の座標に変換する命令エクセルセル名取得
を使ってセルを選択します。
行,列の順に引数を取るのでx,yを逆にして座標を指定します。
画像から色を取得して、選択したセルを着色します。 画像は座標が0,0から始まるのに対し、エクセルは1,1から始まるのでズラしています。
xを1から作業の幅まで繰り返す
yを1から作業の高さまで繰り返す
y,xのエクセルセル名取得して、それをエクセル選択
作業のx-1,y-1から画像色取得して、それにエクセル着色
なでしこ1ではインデントでループのブロックをあらわします。Python風ですね。
インデントには全角スペースが推奨されています。
おわりに
なでしこ1で「Image to Excel」を再現してみました。
ただし出力速度はそうとうもっさりなので、本家のアプリを使うと良いと思います。
関係ないけど、シンタックスハイライトのカンマと読点が見にくいので直したい。