Skip to content

Latest commit

 

History

History
409 lines (289 loc) · 10.7 KB

43-89900-更多颜色.sy.md

File metadata and controls

409 lines (289 loc) · 10.7 KB
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
  • 叫美国国家标准组织
  • 什么标准都订

图片描述

  • 上面是自禁止带餐具的标准提示
  • 这也能定标准么?
    • 能!
  • 较真说
    • 衣服领口寄系几个扣子
    • 握手是手掌倾斜角度
    • 吃饭嚼几口
    • 都可以定标准
  • 但是没人那么累
    • 定这个
    • 因为本身完全精确了也没有任何意义
    • 标准的打法也就失去了灵活性
    • 容易被针对和模仿
  • 但通信的东西
    • 确实还是得有标准的
    • 比如逃逸字符编码格式

由来

图片描述

  • 现在的美国国家标准学会(ANSI)
    • 听起来是很高大上的官方
    • 其实是专业技能人士的民间组织
  • 进化过程
    • 1918 - 美国工程标准委员会(AESC)
      • 美国政府的三个部(商务部、陆军部、海军部)也参与了该委员会的筹备工作
      • 美国材料试验协会(ASTM)
      • 美国机械工程师协会(ASME)
      • 美国矿业与冶金工程师协会(ASMME)
      • 美国土木工程师协会(ASCE)
      • 美国电气工程师协会(AIEE)等组织
      • 共同成立了美国工程标准委员会(AESC)
      • 这个 AIEE 就是 IEEE 的前身
        • IEEE 干什么的来着
        • ascii 就是 ieee 的一个里程碑
      • 工业化很重要的就是能够把标准量化
        • 从钢铁的含量
        • 到螺丝的螺距
        • 甚至篮筐的尺寸
    • 1928 - AESC 改组为美国标准协会(ASA)
    • 1966 - 美利坚合众国标准学会(USASI)
    • 1969 - 美国国家标准学会(ANSI)
  • 难道说 ascii 也经历一个历史过程么?

历史

  • 没错!!!
  • 一切都是时间的产物

图片描述

  • 没有什么是一下子就成为标准的
    • 标准首先能能用得起来
    • 而且也会不断地发展
    • 也是在历史长河中一段时间内的产物
    • 各种组织也有各自生灭的过程
  • 就像 esc 从无到有的过程一样

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 模式

图片描述

图片描述

  • mac 下的 iTerm2

图片描述

  • 由于用rgb量化了颜色
    • 可以感觉这两者基本一致
  • 有什么经典颜色么?

天依蓝

图片描述

  • 66、cc、ff都是十六进制数
  • 需要转化为十进制

图片描述

  • 确实可以得到天依蓝
  • 那可以得到初音绿么?

初音绿

  • 关于初音绿搜到了很多的说法
  • 于是去官网找标准

图片描述

  • 官网给出的是苍绿色
  • 这???
  • 有点像炙甘草少许的意思
  • 就需要给翻译翻译了
  • 量化他!!!

量化

图片描述

  • 可以找到上图中的RGB值
  • 然后进行定值输出

图片描述

  • rgb输出的方式确实好使!!
  • 可以让大海龟进行更细腻的颜色变化吗?
  • 自己尝试一下!

总结

  • 这次首先了解了高亮颜色

图片描述

  • 然后我们了解了\33[38;5;XXXm 索引颜色
    • 每个颜色 0-5 总共 6 级

图片描述

  • 甚至可以用RGB得到各种颜色

    • \33[38;2;R;G;Bmoeasy\33[0m
    • 颜色真不少了
  • 我想用大红色画个桃心 ♥️

  • 有可能吗??🤔

  • 我们下次再说!👋