エクセルアート、ピクセルアートという言葉があります。敢えてイラスト作成用ツールではないエクセルでアートを描くというものです。
この作成をPythonで自動化してみます。
エクセルアート、ピクセルアートとは
エクセルを使ってアートを描くので「エクセルアートなのですが、その中にも二つあるようです。図形オブジェクトを使って描くやり方、セルに色を塗っていわばドット絵として描く方法。今回はこのセル色の方法でエクセルアートを作成します。
何はともあれ、サンプルをご紹介します。エクセルに画像を貼っているのではありません。
マリオの反省として、そもそもドット絵のものはアンチエイリアス(輪郭を滑らかに見せるためのグラデーション)は外してから作成したほうが、そもそもの味を活かせそうですね。




拡大すると、エクセルのセルに色がついていることが分かります。
しかし解像度が高いと、”引き”でしか見ることができないため、エクセルに画像を貼ったのと何ら変わり映えしません。
縦横それぞれ150~200画素くらいが面白いと思いました。

エクセルアート(ピクセルアート)を作るには
ADOBEのサイトに「ドット絵の制作技法を学ぶ」というのがありました。IllustratorやPhotoshopをを使って作成する方法です。それぞれがまさに図形オブジェクトのエクセルアートと、ピクセルによるエクセルアートにあたります。
真っ当に画像作成ツールで作るならこう、という参考までに。
https://www.adobe.com/jp/creativecloud/design/discover/pixel-art.html
今回、これを敢えてエクセルでやってみることにします。ただしプログラム言語はPythonを使います。
ピクセルアート自動作成ツールを作ってみる
写真からエクセルのドット絵を作成してみます。
import os
import sys
import openpyxl
from openpyxl.styles import PatternFill
from openpyxl.utils import get_column_letter
from tqdm import tqdm
from skimage import io
#Excelセル 正方形
EX_COL = 1.25
EX_ROW = 7.50
def main(filename, height, width):
wb = openpyxl.Workbook()
originalws = wb.active
for y in tqdm(range(height)):
for x in range(width):
r,g,b = img[y, x]
rgb = '%02X%02X%02X' % (r,g,b)
originalws.cell(row=y+1, column=x+1).fill = PatternFill(patternType='solid', fgColor=rgb)
originalws.column_dimensions[get_column_letter(x+1)].width = EX_COL
originalws.row_dimensions[y+1].height = EX_ROW
fname, _ = os.path.splitext(os.path.basename(filename))
wb.save(fname+'.xlsx')
if __name__ == '__main__':
filename = sys.argv[1]
img = io.imread(filename)
height, width, channel = img.shape
main(filename, height, width)
これをMake_Pixelart.pyとしました。

使い方
もう一つ、下記のようなDosのバッチを作っておきます。
ファイル名は「ここに写真をドロップする.bat」にしました。
※txt形式で下記のように記述し、拡張子をbatに変更すればバッチになります。
rem @echo off
python Make_Pixelart.py %~nx1

これのショートカットを作り、このショートカットに写真をドロップする、という使い方をします。


まとめ
- 写真の画素一つ一つの色をエクセルのセル色に指定する
- セルを正方形にサイズ調整する
レゴやマイクラの設計図作成にも役立つかもしれませんね。
コメント