はじめに
notepad.exeにカラー画像や動画を表示することができるツールを作りました。
DEMO
フル動画はこちら
仕様
リポジトリ
仕様
色数:41色(後に解説)
解像度:最大横1000px × 制限なし
カラー表示はnotepad.exeのみ
使い方はreadmeを御覧ください
きっかけ
濃淡でASCIIアートに変換するツールで遊んでいたとき、出力結果をNotepad.exeに表示してみました。
そのとき、面白半分で横幅を最大に設定すると、ウィンドウに収まらなくなりました。
そこで表示を10%にすると、なぜか変に色がついてることを発見しました。

工夫したらNotepad.exeでカラー画像が表示できるのではと思いついきました。
考察
メモ帳の設定は
フォント:MSゴシック
スタイル:標準
文字サイズ:12pt
この設定を基準として扱います。
- アンチエイリアスによって色がついている
- 一文字が縦2ドット横1ドットになっている
- 上半分の色と下半分の色が違う
- フォントを変えると、表示が崩れてしまったり、色が変わることがある
- 複数連続した文字にすると色を再現できる
- 一文字だけだと別の色になり、再現できなかった
ということがわかりました。
今回はフォントをMSゴシックに固定し、上と下のドットの平均値をこの文字の色として扱うようにしました。
画像表示
使う文字は、
- 半角数字
- 小文字アルファベット
- 大文字アルファベット
- 記号
の中から重複を考慮し、総数41種類の文字を使いました。
つまり、41色使うことができます。
(以下、これらの文字と色を結びつけたデータセットを文字パレットと表記します)
固定パレット量子化を使い色を決め、対応する文字を出力するようにしました。
どの文字がどの色に対応しているかはこちらをご覧ください
https://github.com/pIIton345/notepad_rendering/blob/main/src/colorpalette.txt
暗い画像が見えない
文字パレットは明るい色に偏りがあり、赤黄緑青などの多色が揃っていますが、暗い色は、グレーや真っ黒ぐらいなので、色の自由が効きません。
対処法としては、画像を加工して、明るさを上げてから処理をする方法で解決しました。
動画表示
画像表示ができたから動画表示もしたい!
画像表示用のコードから転用して、動画に対応させました。
しかしnotepad.exeにはテキストファイルを更新する機能はありません。
vscodeやnotepad++などはテキストファイルを更新する機能がありますので再生はできました。
Notepad.exeに更新する機能をつける
GIGAZINEの記事使えそうな技術を使ってる記事がありました。
chatGPTに技術を推測させたところ、windowsAPIを使って高速でメモ帳の表示を書き換えているとのことだったのでこれを再現したものを作ってもらいました。
これによりNotepad.exeで動画を再生することができました。
おわりに
テキストエディタであるNotepad.exeが制限ありの画像ビューアーに化けました。
もし興味がありましたらこのツールを遊んでほしいです。



