4 个版本
0.1.3 | 2022年1月26日 |
---|---|
0.1.2 | 2022年1月26日 |
0.1.1 | 2022年1月25日 |
0.1.0 | 2022年1月25日 |
9 在 #srgb 中
每月下载量 271
在 libremarkable 中使用
27KB
327 行
rgb565
rgb565
提供了用于 RGB565 像素格式的反序列化、序列化和转换例程,该格式仅使用 16 位存储颜色信息。红色通道获得 5 位,绿色 6 位,蓝色再次获得 5 位。RGB565 格式常用于嵌入式设备和微控制器,例如只有较低程度颜色复制的电子墨水显示屏。
rgb565
包含了开箱即用的方法,用于转换到和从许多顺序和字节序,每个例程都经过手动验证、自动验证,并在使用 RGB565 格式的物理设备上进行测试。
查找表
rgb565
具有可选功能,可以使用 查找表 在没有图形协处理器的嵌入式设备上获得巨大的速度提升(高达 20%!)。特别是 sRGB 从查找表中获益良多,因为您通常需要浮点数学来正确逼近伽玛曲线。
您可以使用 Cargo 功能控制查找表的使用
swap_components_lut
以加速加载和存储到 BGR 值l5_to_l8_lut
以加速将到 8 位 RGB 红色/蓝色通道的转换l6_to_l8_lut
以加速将到 8 位 RGB 绿色通道的转换l5_to_s8_lut
以加速将到 8 位 sRGB 红色/蓝色通道的转换l6_to_s8_lut
以加速将到 8 位 sRGB 绿色通道的转换l565_to_l888_lut
以加速将 RGB565 值转换为 8 位 RGBl565_to_s888_lut
以加速将 RGB565 值转换为 8 位 sRGBl8_to_l5_lut
以加速从 8 位 RGB 红色/蓝色通道的转换l8_to_l6_lut
以加速从 8 位 RGB 绿色通道的转换s8_to_l5_lut
以加速从 8 位 sRGB 红色/蓝色通道的转换s8_to_l6_lut
以加速从 8 位 sRGB 绿色通道的转换l888_to_l565_lut
以加速将 8 位 RGB 值转换为 RGB565s888_to_l565_lut
以加速将 8 位 sRGB 值转换为 RGB565
如果您不会使用BGR565,那么您不需要swap_components_lut
。如果您将一次性转换所有三个通道,那么您不需要单独的l/s#_to_l/s#_lut
功能。
除了l888_to_l565_lut
和s888_to_l565_lut
之外,所有LUT默认启用,如果您阅读这段内容,您会明白原因——所有LUT的大小如下:
swap_components_lut
:128 KiB(131,072字节)l5_to_l8_lut
:32字节l6_to_l8_lut
:64字节l5_to_s8_lut
:32字节l6_to_s8_lut
:64字节l565_to_l888_lut
:192 KiB(196,608字节)l565_to_s888_lut
:192 KiB(196,608字节)l8_to_l5_lut
:256字节l8_to_l6_lut
:256字节s8_to_l5_lut
:256字节s8_to_l6_lut
:256字节l888_to_l565_lut
:32 MiB(33,554,432字节)s888_to_l565_lut
:32 MiB(33,554,432字节)
这是因为l888_to_l565_lut
和s888_to_l565_lut
都必须涵盖24位“真色彩”的1.6777216百万色空间,我认为默认添加这样的膨胀并不好。
构建
$ cargo build
测试
$ cargo test
许可证
此存储库及其包含的所有源代码均受MIT许可证的许可,主要因为我想将其包含在libremarkable
中,该许可证也受MIT许可。