show | version | enable_checker |
---|---|---|
step |
1.0 |
true |
- 上次我们搞的还是颜色
- FG foreground 前景色
- BG background 背景色
- 这些都可以和字体的样式结合起来
- 难道就这几种颜色吗??🤔
- 有点少啊!
- \是转义字符 escape character的意思
- \和其他字符可以构成转义序列
- \t
- \n
- \r
- \e 也是转义序列
- \e 这个转义序列转义到 escape 这样的状态
- 从正常的输出退出
- 进入 control sequences 控制序列
- 控制序列的文本是不直接输出到屏幕的
- 而是设置一些位置、样式、颜色之类的
- 他开始于 CSI(Control Sequence Initiator)
- CSI
- \033[ 就是 控制序列初始化符号(Control Sequence Initiator)
- \e 对应 ascii 的值是(033)8
- 所以一般写作
\033[控制信息
- 各终端关于控制信息的实现标准
- 基本一致
- 有细节不太一样
- 形成了各产品内部标准
- 最终统一到了 ansi 标准下
- 31-37、41-47 对应的一般的前景背景色
- 91-97、101-107 对应高亮的前景背景色
- Bright Red和Red确实不一样
- Green也有区别
- 亮蓝色确实让蓝色亮了起来
- 但是这个和字体样式中的加粗加亮比较呢?
- 31 确实比 91 暗一点
- 91 确实比 31 亮一点
- 加粗确实有效果
- 但还不是纯红色
- 有点粉呢
- 这些是谁定的?
- 制定规则的地方叫做 ansi
- 叫美国国家标准组织
- 什么标准都订
- 上面是自禁止带餐具的标准提示
- 这也能定标准么?
- 能!
- 较真说
- 衣服领口寄系几个扣子
- 握手是手掌倾斜角度
- 吃饭嚼几口
- 都可以定标准
- 但是没人那么累
- 定这个
- 因为本身完全精确了也没有任何意义
- 标准的打法也就失去了灵活性
- 容易被针对和模仿
- 但通信的东西
- 确实还是得有标准的
- 比如逃逸字符编码格式
- 现在的美国国家标准学会(ANSI)
- 听起来是很高大上的官方
- 其实是专业技能人士的民间组织
- 进化过程
- 1918 - 美国工程标准委员会(AESC)
- 美国政府的三个部(商务部、陆军部、海军部)也参与了该委员会的筹备工作
- 美国材料试验协会(ASTM)
- 美国机械工程师协会(ASME)
- 美国矿业与冶金工程师协会(ASMME)
- 美国土木工程师协会(ASCE)
- 美国电气工程师协会(AIEE)等组织
- 共同成立了美国工程标准委员会(AESC)
- 这个 AIEE 就是 IEEE 的前身
- IEEE 干什么的来着
- ascii 就是 ieee 的一个里程碑
- 工业化很重要的就是能够把标准量化
- 从钢铁的含量
- 到螺丝的螺距
- 甚至篮筐的尺寸
- 1928 - AESC 改组为美国标准协会(ASA)
- 1966 - 美利坚合众国标准学会(USASI)
- 1969 - 美国国家标准学会(ANSI)
- 1918 - 美国工程标准委员会(AESC)
- 难道说 ascii 也经历一个历史过程么?
- 没错!!!
- 一切都是时间的产物
- 没有什么是一下子就成为标准的
- 标准首先能能用得起来
- 而且也会不断地发展
- 也是在历史长河中一段时间内的产物
- 各种组织也有各自生灭的过程
- 就像 esc 从无到有的过程一样
- 早年间没有 esc 键
- 类似的功能用的是波浪号~tilde
- 这个键当时的使用频率比现在高很多
- 标准是由当时的大流行产品决定的
- 实践出标准
- 1978 年一代机皇( vt100 )把这个特殊按键变成了习惯
- 后来变成了标准
- 标准又会影响到后面的应用
- 就像当年 unix 的大流行把 tcpip 做成通信标准一样
- 互为因果
- ansi 是事实上大家都遵循的标准
- 这些符号确实可以定义颜色名称
- 谁能告诉我什么是红?
- 红是个抽象的形容词
- 但是具体的颜色是由终端软件控制的
- 这些终端必须得落实
- 每个终端软件实现的红色都是红的
- 但具体实现会有一些差异
- 可是
- 在这个xfce的终端上
- 我就是想要一个大红啊!😫
- 可以有更明确的颜色么?
- 可以用索引颜色
- 那就是 38;5;索引 m
- 索引来自于索引表
- 这颜色好多啊
- 记不住怎么办?
- 或者可以研究一下这些颜色的规律?
- 0-7 是标准色
- 8-15 是高亮色
- 16-231 是混合色
- r、g、b 都是从 0-5 的阶梯范围
- 具体的颜色来自于 16+36r+6g+b
- 得到数值后可以显示颜色
- 232-255 是 24 级灰阶色
- 仔细想想lolcat这个命令肯定利用了这个规律
- 有了这个我可以制作一个海蓝色的海龟么?
- 我想让海龟颜色变色
- 怎么办?
- 每次增加 1
- 从 16 到 231
- 现在需要 python 做一个循环
- 搜索
- 我们根据这个来修改
num = 16
while num <= 231:
print(num,end=",")
num = num + 1
- 能否让这些字一个个出来呢?
- 这恐怕需要清屏了!!!
- 清屏
- \033[2J
- 设置坐标位置
- \33[10;5H
import time
num = 16
s = ""
while num < 231:
s += str(num) + ","
print("\33[2J\33[10;5H" + s , end = "")
num += 1
time.sleep(0.5)
- 蛮有趣的
- 刚好回忆了之前的
- 清屏
- 设置坐标
- 那如何把这些数字显示成各种颜色呢?
num = 16
while num <= 231:
color_str = "\033[38;5;"+str(num)+"m"+str(num)+"\033[0m"
print(color_str,end=",")
num = num + 1
- 直接复制粘贴可能会有问题
- 需要仔细检查代码
- 能否显示出各种背景色呢?
num = 16
while num <= 231:
color_str = "\033[48;5;"+str(num)+"m"+str(num)+"\033[0m"
print(color_str,end=",")
num = num + 1
- 是否能够设置了前景色背景色而且闪烁呢?
- 怎么样让大海龟变色?
- 前景变还是背景变?
- 还是前后都变?
- 这由你来完成!🤯
- 而且需要永不停息地变色
- 这个任务能交给你么?🧐
- 快来实现这个神迹吧!
- 但是这个颜色描述还是不够细腻
- 能直接设置 RGB 么?🤔
-
关于 RGB 模式
-
ANSI 的标准如下
- mac 下的 iTerm2
- 由于用rgb量化了颜色
- 可以感觉这两者基本一致
- 有什么经典颜色么?
- 66、cc、ff都是十六进制数
- 需要转化为十进制
- 确实可以得到天依蓝
- 那可以得到初音绿么?
- 关于初音绿搜到了很多的说法
- 于是去官网找标准
- 官网给出的是苍绿色
- 这???
- 有点像炙甘草少许的意思
- 就需要给翻译翻译了
- 量化他!!!
- 可以找到上图中的RGB值
- 然后进行定值输出
- rgb输出的方式确实好使!!
- 可以让大海龟进行更细腻的颜色变化吗?
- 自己尝试一下!
- 这次首先了解了高亮颜色
- 然后我们了解了\33[38;5;XXXm 索引颜色
- 每个颜色 0-5 总共 6 级
-
甚至可以用RGB得到各种颜色
- \33[38;2;R;G;Bmoeasy\33[0m
- 颜色真不少了
-
我想用大红色画个桃心
♥️ -
有可能吗??🤔
-
我们下次再说!👋