Spring Bootでカラフルなバナーを表示してみた

というわけでカラフルなバナーを表示するBannerクラスを書いてみました。

どうやってんのか

ターミナルの背景色を変更してスペースを2つ出力、を繰り返して絵を描いています。 スペースを2つ出力することで正方形になって良い感じにドット絵っぽくなります。

背景色を変えるには

ESC + '[48;05;' + 色のインデックス + 'm'

で出来ます。

次のGroovyコマンドを試してみてください。

groovy -e "System.out.write(0x1b);println('[48;05;20mHello, World!')"

背景色を元に戻すには

ESC + '[0m'

です。

それから、元画像はターミナルで出力できる色だけで構成されているわけではないので、 元画像から1ピクセルずつ色を読み込んでターミナルで出力できる256色の中から近い色を探して出力しています。

2つの色がどの程度近いかはカラーコードを三次元の座標に見立てて2つの色間の距離を求めて一番近いものを選んでいます。

int r = ((rgb1 >> 16) & 0xff) - ((rgb2 >> 16) & 0xff);
int g = ((rgb1 >> 8) & 0xff) - ((rgb2 >> 8) & 0xff);
int b = (rgb1 & 0xff) - (rgb2 & 0xff);
return (int) Math.sqrt(r * r + g * g + b * b);

概ねこんな感じです。

いろいろブート

うらがみブート。

../../../_images/uragami-boot.png

いろふブート。

../../../_images/irof-boot.png

ちむブートペロペロ(^ω^)

../../../_images/syobochim-boot-peropero.png

こざブート✌️( ・ㅂ・)و🍺

../../../_images/kozaboot.png

ブートくしーさん。

../../../_images/bootksy.png

やんくブート:q!

../../../_images/yank-boot_q.png