#blur #gaussian #graphics

已删除 stackblur

高斯模糊的快速近似

0.1.0 2021年5月15日

#20#blur

MIT/Apache

17KB
235

stackblur

crates.io docs.rs

快速高斯模糊近似。

StackBlur 的 Rust 实现,由 Mario Klingemann 开发。非常快速且精确的高斯模糊近似。基于 Enrique López Mañas 的 Java 实现,Apache 2.0 许可证。

注意

stackblur 目前正在积极开发中,版本之间可能存在破坏性更改。发布将稳定在 1.0.0 版本。

使用方法

use std::num::{NonZeroU8, NonZeroUsize};

use stackblur::blur;

const RED: u32 = 0xffff0000;
const GREEN: u32 = 0xff00ff00;
const BLUE: u32 = 0xff0000ff;

// load your image, u32 RGBA pixels
let mut pixels: Vec<u32> = vec![
    RED, GREEN, GREEN, RED,
    GREEN, RED, BLUE, GREEN,
    GREEN, BLUE, RED, GREEN,
    RED, GREEN, GREEN, RED,
];

// blur!
blur(
    &mut pixels,
    NonZeroUsize::new(4).unwrap(),
    NonZeroUsize::new(4).unwrap(),
    NonZeroU8::new(1).unwrap(),
);

示例

所有示例以半径 15 在两个方向上进行了模糊处理。

cballs without blur cballs blurred

western without blur western blurred

将 RGBA PNGs 添加到 samples/input 并运行 cargo run --release --example samples 来查看您的示例!

编码风格

遵循 rustfmt 和 Rust 2018 规范,以及 clippy 检查。

贡献

欢迎提交拉取请求。

除非您明确表示,否则任何有意提交并包含在本作品中的贡献,根据 Apache-2.0 许可证定义,均应双重许可,许可条款为 MIT 许可证和 Apache 许可证(版本 2.0)。

版本

此项目遵循 语义版本控制

更改记录在 更改日志 中。

请参阅 标签 以获取可用的发布版本。

作者

请参阅 贡献者列表

许可证

有关详细信息,请参阅 LICENSE-APACHELICENSE-MIT

致谢

  • Mario Klingemann 为原始 stackblur 算法。
  • Enrique López Mañas 为此代码所基于的 Java 端口。
  • 许多 Rust Discord 的成员在回答问题和获得灵感方面提供了帮助。

想在这里看到你的名字吗?请联系我或者开启一个PR!

无运行时依赖