17次发布
新 0.8.6 | 2024年8月22日 |
---|---|
0.8.4 | 2024年1月16日 |
0.8.3 | 2023年12月5日 |
0.8.2 | 2023年9月21日 |
0.2.0 |
|
#232 在 图像
29,096 每月下载量
用于 27 个crate(18直接)
43KB
768 行
resize
纯Rust图像重采样库。
功能
- 快速,支持多种像素格式
- 无编码器/解码器,旨在与某些外部库一起使用
- 针对多次调整大小到相同维度进行了优化:使用预分配的缓冲区和矩阵
用法
use resize::Pixel::RGB8;
use resize::Type::Lanczos3;
// Downscale by 2x.
let (w1, h1) = (640, 480);
let (w2, h2) = (320, 240);
// Don't forget to fill `src` with image data (RGB8).
// This requires Vec<RGB<u8>>. If you have Vec<u8>, then use .as_rgb()/.as_rgb_mut() to reinterpret it as a slice of pixels.
let src = vec![RGB::new(0,0,0); w1*h1];
// Destination buffer. Must be mutable.
let mut dst = vec![RGB::new(0,0,0); w2*h2];
// Create reusable instance.
let mut resizer = resize::new(w1, h1, w2, h2, RGB8, Lanczos3);
// Do resize without heap allocations.
// Might be executed multiple times for different `src` or `dst`.
resizer.resize(&src, &mut dst);
推荐
阅读这篇文章和这篇文章关于图像重采样技术和重采样滤波器。简而言之;(使用此库的内置滤波器)使用Lanczos3
进行下采样,使用Mitchell
进行上采样。您还可能想要在线性颜色空间中进行下采样(但不能进行上采样)。当前库中不包括伽玛校正例程,但实际上手动实现相当简单,请参阅这里的一些基本理论。
许可证
- 库根据MIT许可。
- 示例中使用的图像根据CC BY-SA 3.0许可。
依赖关系
~1.3–2MB
~37K SLoC