终端颜色

终端颜色

你想变成什么颜色? #

前几天为 SoraBot 的 emote 模块添加了一个小功能。 也即,使用 0x 或者 # 来代指 hex 纯色块。

写了个简单的脚本将一张像素图片转换成 SoraBot 用的聊天输入。

但我对这个脚本不甚满意,毕竟之前也有玩过 lolcat 这种终端玩具,就想在终端里也预览一下染色结果。

后来成品是这样的 >

获取图片像素和像素的 rgb 就比较简单了,工具要多少有多少,羽希用一贯喜欢的 imagemagick

magick $1 -format "%[hex:u.p{$x,$y}]\n" info:

终端的颜色输出参考了这个说明 >

\033[38;2;146;255;12mHello!\033[0m
^     ^ ^  ^   ^   ^   ^     ^   ^
|     | |  R   G   B   |     |   |
|     | |  |           |     |   \ Reset the colour to default
|     | |  |           |     |
|     | |  |           |     \ Escape character
|     | |  |           |
|     | |  \ R;G;B     \ Text to print
|     | |
|     | \ Indicate the following sequence is RGB
|     |
|     \ Code to instruct the setting of an 8 or 24-bit foreground (text) colour
|
\ Escape character

冲浪了半天,一堆介绍终端字体颜色的都是基于 ASCII 预置控制用字符和颜色,几乎没有关于 rgb 渲染的,还是这个介绍比较清晰。

其中,使用38;2为字体样式,如果是48;2则为背景样式。

用两个字符来充当一个方块像素。