見出し画像

文字をサブピクセルアートに

こんにちは。

サブピクセルアートというものをご存知でしょうか。

ディスプレイ上の画像はすべて光の粒の集合体であり(ピクセル)、それをRGBに細分化したものがサブピクセルです。

サブピクセルアートではこのサブピクセルを利用します。

普通のピクセルアートだとピクセルが最小単位ですが、サブピクセルアートだとサブピクセルが最小単位です。

実際はRGBまとめて1x1のピクセルに収まっているので

こうです。

これをピクセルに直すと、

こうなります。

これをディスプレイに映すともとのピクセルアートを得られます。

これを用いて文字をサブピクセルアートにしてみるという話です。


手法

まず手法ですが、お好きなピクセルフォントを用意して、文字を打ち込んでください。

そうしたら、それぞれのピクセルを正方形にしてください。

次に、左から1列目、4列目、7列目のように2列おきに正方形を選択してください。

そうしたら、それを赤色にします。

同じように2列目からを緑色、3列目からを青色にします。

そうしたら緑色のものを右へ1つ、青色のものを右へ2つずらします。

間をなくすようにずらします。

最後に、正方形のブレンドモードをスクリーンにします。
すると…

背景を黒くすることを忘れずに

サブピクセルアートになりました!!!

…面倒ですよね。

そこで、自動でサブピクセルアートに変換するウェブサイトを作りました。

仕組み

仕組みです。

まず、文字をピクセルに変換する必要があります。

幸いフォントが公開されていたので使います。

文字を入力すると0と1のピクセルで表現できるようにしました。

text2pixels("NOTE");
[
[1,1,0,0,0,0,0,1,1,1,0,0,0,0,1,1,1,0,0,0,0,1,1,1],
[1,0,1,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0],
[1,0,1,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,0,0,1,1,0],
[1,0,1,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0],
[1,0,1,0,0,0,0,1,1,1,0,0,0,0,0,1,0,0,0,0,0,1,1,1],
]

そうしたら配列を3つずつに区切ります。RGBに対応しています。

[
	[
		[1, 1, 0],
		[0, 0, 0],
		[0, 1, 1],
		[1, 0, 0],
		[0, 0, 1],
		[1, 1, 0],
		[0, 0, 0],
		[1, 1, 1]
	],
	[
		[1, 0, 1],
		[0, 0, 0],
		[0, 1, 0],
		[1, 0, 0],
		[0, 0, 0],
		[1, 0, 0],
		[0, 0, 0],
		[1, 0, 0]
	],
	[
		[1, 0, 1],
		[0, 0, 0],
		[0, 1, 0],
		[1, 0, 0],
		[0, 0, 0],
		[1, 0, 0],
		[0, 0, 0],
		[1, 1, 0]
	],
	[
		[1, 0, 1],
		[0, 0, 0],
		[0, 1, 0],
		[1, 0, 0],
		[0, 0, 0],
		[1, 0, 0],
		[0, 0, 0],
		[1, 0, 0]
	],
	[
		[1, 0, 1],
		[0, 0, 0],
		[0, 1, 1],
		[1, 0, 0],
		[0, 0, 0],
		[1, 0, 0],
		[0, 0, 0],
		[1, 1, 1]
	],
	[
		[0, 0, 0],
		[0, 0, 0],
		[0, 0, 0],
		[0, 0, 0]
	],
	[
		[0, 0, 0],
		[0, 0, 0],
		[0, 0, 0],
		[0, 0, 0]
	]
]

そして、色に変換します。

[
   [
      "#ffff00",
      "#000000",
      "#00ffff",
      "#ff0000",
      "#0000ff",
      "#ffff00",
      "#000000",
      "#ffffff"
   ],
   [
      "#ff00ff",
      "#000000",
      "#00ff00",
      "#ff0000",
      "#000000",
      "#ff0000",
      "#000000",
      "#ff0000"
   ],
   [
      "#ff00ff",
      "#000000",
      "#00ff00",
      "#ff0000",
      "#000000",
      "#ff0000",
      "#000000",
      "#ffff00"
   ],
   [
      "#ff00ff",
      "#000000",
      "#00ff00",
      "#ff0000",
      "#000000",
      "#ff0000",
      "#000000",
      "#ff0000"
   ],
   [
      "#ff00ff",
      "#000000",
      "#00ffff",
      "#ff0000",
      "#000000",
      "#ff0000",
      "#000000",
      "#ffffff"
   ],
   [
      "#000000",
      "#000000",
      "#000000",
      "#000000"
   ],
   [
      "#000000",
      "#000000",
      "#000000",
      "#000000"
   ]
]

これをcanvasに表示させます。

本当はcanvasを使った方が良いのでしょうが、使えない使い勝手が悪いのですべてhtmlで行います。そのせいで少し重いです。

https://note.com/tozaburo/n/n09b6801b90cc

canvasの部分のコードはChatGPTに書いてもらいました!!!

ありがとうございます

Canvasを使えるようになるのはまだ先の話…

使い方

使い方は至ってシンプル。

変換したい文字を入力してConvertボタンを押すだけ。

すぐに変換されます。

注意点としてはいくつかの画面(僕のものとか)だと1ピクセルが2x2で表示されるのでCtrl(⌘)と-を何回か押して画面を50%の大きさに縮小します。

出来上がったものを見る方法としては、百均に売っているマクロレンズをスマホのカメラに取り付けて、うまい位置で写真を取ると見えます。

ぜひ試して見てください。

おまけ


参考:

(おしまい)

いいなと思ったら応援しよう!

tozaburo/小林都央
よろしければサポートお願いします!いただいたサポートを励ましにがんばります!

この記事が参加している募集