37个版本

0.8.5 2024年3月7日
0.8.4 2023年10月13日
0.8.3 2023年9月22日
0.8.2 2023年7月21日
0.5.2 2018年3月22日

#107 in 图像

Download history 387/week @ 2024-04-29 235/week @ 2024-05-06 31/week @ 2024-05-13 46/week @ 2024-05-20 60/week @ 2024-05-27 28/week @ 2024-06-03 22/week @ 2024-06-10 10/week @ 2024-06-17 137/week @ 2024-06-24 18/week @ 2024-07-01 5/week @ 2024-07-08 19/week @ 2024-07-15 1/week @ 2024-07-22 77/week @ 2024-07-29 35/week @ 2024-08-05 42/week @ 2024-08-12

每月157次下载
用于 10 个Crate(6个直接使用)

GPL-3.0 许可

75KB
1K SLoC

blit

Build Status Crates.io Documentation License: GPL-3.0 Downloads

文档

使用遮罩颜色或alpha阈值快速绘制精灵。

交互式演示

此Crate与RGBA u32 缓冲区一起工作。alpha通道只能通过单个阈值读取,将其转换为二进制透明或非透明颜色。这种限制存在的原因是它允许高效的渲染优化。

为了在不进行类型转换的情况下方便地使用此Crate,大多数接受数字的函数都是泛型的,数字类型为 num_traits::ToPrimitive,这可能会有些令人困惑,但可以将任何数字直接传递给这些函数。

在使用此Crate时,最重要的函数是 Blit::blit,该函数针对 BlitBuffer 实现。

示例

use blit::{Blit, ToBlitBuffer, BlitOptions, geom::Size};

const CANVAS_SIZE: Size = Size { width: 180, height: 180 };
const MASK_COLOR: u32 = 0xFF_00_FF;
// Create a buffer in which we'll draw our image
let mut canvas: Vec<u32> = vec![0xFF_FF_FF_FF; CANVAS_SIZE.pixels()];

// Load the image from disk using the `image` crate
let img = image::open("examples/smiley_rgb.png").unwrap().into_rgb8();

// Blit by creating a special blitting buffer first where the MASK_COLOR will be the color that will be made transparent
let blit_buffer = img.to_blit_buffer_with_mask_color(MASK_COLOR);

// Draw the image 2 times to the buffer
blit_buffer.blit(&mut canvas, CANVAS_SIZE, &BlitOptions::new_position(10, 10));
blit_buffer.blit(&mut canvas, CANVAS_SIZE, &BlitOptions::new_position(20, 20));

依赖项

~0.4–1.7MB
~32K SLoC