3个版本 (重大更改)
0.3.0 | 2023年10月7日 |
---|---|
0.2.0 | 2023年8月15日 |
0.1.0 | 2023年6月24日 |
#402 in 图像
每月25次下载
165KB
4K SLoC
pixel_map
Rust 库
PixelMap
使用四叉树结构存储图像的像素数据。
概述
PixelMap
是MX四叉树实现,在根节点占据二维空间的一个区域,并向下细分为像素级别。映射中的每个像素可以存储一个泛型像素数据值,但树结构优化了常见值区域的存储。像素值必须是 Copy + PartialEq
。
项目状态:alpha。版本可能包含重大更改。
用法
安装
将crate添加到您的 Cargo.toml
cargo add pixel_map
创建像素映射
use pixel_map::PixelMap;
// Example pixel data
struct Color(u8, u8, u8);
let mut pixel_map = PixelMap::<Color>::new(
&uvec2(1920, 1080), // size of the pixel map
Color(0, 0, 0), // initial value
1, // pixel size
);
在PixelMap上绘图
// Set a pixel
pixel_map.set_pixel((11, 12), Color(255, 0, 0));
// Draw a line
pixel_map.draw_line(&ULine::new((500, 500), (600, 400)), Color(0, 255, 0));
// Draw a rectangle
pixel_map.draw_rect(&URect::from_corners(uvec2(200, 200), uvec2(300, 300)), Color(0, 0, 255));
// Draw a circle
pixel_map.draw_circle(&ICircle::new((500, 500), 100), Color(0, 0, 255));
导航PixelMap
// Visit all leaf nodes
pixel_map.visit(|node| {
println!("region: {:?}, value: {:?}", node.region(), node.value());
});
// Visit all leaf nodes that have been modified
pixel_map.visit_dirty(|node| {
println!("region: {:?}, value: {:?}", node.region(), node.value());
});
pixel_map.clear_dirty(true /*recurse*/);
功能
- 设置单个像素值或绘制原始形状
- 线条
- 矩形
- 圆形
- 对两个像素映射执行布尔运算(即并集、交集、差集、异或)。
- 通过脏标志检测树节点的更改。
- 计算形状周围的轮廓线。
限制
- 将像素数据加载和保存到各种图像格式超出了此crate的范围。但提供了填充像素数据以及遍历四叉树结构所需的基本操作。因此,这可以通过包含或伴随代码实现,具体取决于您的用例需求。
许可
pixel_map
是免费和开源的。此存储库中的所有代码均可选择以下任一许可方式
- MIT 许可证 (
LICENSE-MIT
或 http://opensource.org/licenses/MIT) - Apache许可证,版本2.0(
LICENSE-APACHE
或 https://apache.ac.cn/licenses/LICENSE-2.0)
依赖项
约4MB
约107K SLoC