
お遊びネタです。
よくExcelシートの「セル色でドット絵を作る」
というネタを見ますが、Pythonを使用して、超カンタンに画像から作成することができましたので、まーまー参考までに。
はじめに
Openpyxlを用いて、Excelファイルのいろんな処理ができることから思いつきました。
![]()
↑こういったアイコン画像を読み込み、
Excelシートを作成することができます。
あまり使用シーンは多くないかもですが、
画像→Excelで表現する手法の一つで参考になれば。
ソースコード
Githubに上げましたので、実際に動かしてみたい方はどうぞ。
GitHub - MaxiParadise/Make_Excel_PixelArt
Contribute to MaxiParadise/Make_Excel_PixelArt development by creating an account on GitHub.
説明
画像データをPillowで読み込み、
全画素の色をOpenpyxlを用いてセル色に設定しています。
フルカラーの写真でも表現できます。
img = Image.open(file_name).convert('RGBA')
width, height = img.size
imgdata = img.getdata()
#Workbook作成
wb = openpyxl.Workbook()
sheet = wb.active
sheet.title = 'Excel Art'
for y in range(height):
y_offset = y * width
for x in range(width):
#画像から色データ取得
r,g,b,a = imgdata[y_offset+x]
if a > 128: #透明はスキップ
#セルに設定
color_ff = '%02X%02X%02X' % (r,g,b)
sheet.cell(row=y+1, column=x+1).fill = PatternFill(patternType='solid', fgColor=color_ff)
#グリッドサイズを正方形に設定
sheet.column_dimensions[get_column_letter(x+1)].width = GRID_SIZE * COL_PP
sheet.row_dimensions[y+1].height = GRID_SIZE * ROW_PP
50行ほどのコードで実現できました。
せっかくなので、
いらすとやさんの「AIに支配される人達」のイラストもExcel化してみました。
800x604ピクセルに及ぶ、巨大なExcelシートドット絵もできてしまいます。
また、高速化のため、以下のページを参考にさせていただきました。
getpixelを使用せず、
またy_offset 算出を最初に1回にすることで、乗算回数を減らしています。
これは画像が大きいほど効いてくると思うので。
注意事項
写真のようなフルカラーも変換できますが、
古いExcelだとセル色設定の最大個数があるらしく、
その値を超えると「ファイルが壊れている」になりました。
Excel2016では大丈夫でしたが、
Excel2010だと、巨大なものは上手く読めなかったです。
さいごに
最後まで読んでいただき、ありがとうございます!
ブックマーク登録、
ツイッターフォロー、
よろしくお願いいたします!🙇♂️🙇♂️
↓↓↓



