#rgb #转换 #转换 #const-fn #图形 #ansi-256-colors

rgb2ansi256

使用零依赖将RGB 24位颜色转换为ANSI 256 (8位) 颜色代码的const fn

2次发布

0.1.1 2021年11月4日
0.1.0 2021年10月21日

#246图形API

Download history 87/week @ 2024-03-14 39/week @ 2024-03-21 82/week @ 2024-03-28 47/week @ 2024-04-04 24/week @ 2024-04-11 70/week @ 2024-04-18 35/week @ 2024-04-25 41/week @ 2024-05-02 25/week @ 2024-05-09 61/week @ 2024-05-16 33/week @ 2024-05-23 23/week @ 2024-05-30 28/week @ 2024-06-06 24/week @ 2024-06-13 26/week @ 2024-06-20 5/week @ 2024-06-27

87 每月下载量
4 包 中使用

自定义许可

11KB
121

rgb2ansi256

crate CI

rgb2ansi256 是一个小的Rust库,用于将RGB 24位颜色转换为ANSI 256 (8位) 颜色代码,零依赖,并使用const fn。此包是从 ansi_colours C库v1.0.4移植过来的。

通过移植库,我们有两个好处

  • 无不安全性
  • 编译时计算(无运行时开销)
use rgb2ansi256::rgb_to_ansi256;

const MEDIUM_SPRING_GREEN: u8 = rgb_to_ansi256(0, 255, 175);

assert_eq!(MEDIUM_SPRING_GREEN, 49);

文档

以下是转换前后的比较。

comparison

左侧窗口是支持24位颜色(真彩色)的iTerm2。右侧窗口是只支持8位颜色的Terminal.app。转换可以很好地在8位颜色中重现24位颜色。

安装

将此包添加到您的 Cargo.toml

[dependencies]
rgb2ansi = "0.1"

基准测试

这是微基准测试套件的结果。rgb2ansi256比ansi_colours稍微快一些。

rgb2ansi256             time:   [150.58 us 151.06 us 151.55 us]
                        change: [-1.2657% -0.9774% -0.6991%] (p = 0.00 < 0.05)
                        Change within noise threshold.
Found 9 outliers among 100 measurements (9.00%)
  5 (5.00%) low mild
  4 (4.00%) high mild

ansi_colours            time:   [158.07 us 158.83 us 159.64 us]
                        change: [-1.3717% -0.7338% -0.1909%] (p = 0.02 < 0.05)
                        Change within noise threshold.
Found 12 outliers among 100 measurements (12.00%)
  3 (3.00%) low mild
  8 (8.00%) high mild
  1 (1.00%) high severe
  • 机器:iMac(Retina 5K,27英寸,2020年)
  • ansi_colours:v1.0.4
  • rustc:1.56(稳定版)

许可

继承自原始C库,此库根据LGPL-3.0许可分发。

无运行时依赖