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 2015年11月19日

#232图像

Download history 4829/week @ 2024-05-03 6799/week @ 2024-05-10 12277/week @ 2024-05-17 10458/week @ 2024-05-24 6211/week @ 2024-05-31 12506/week @ 2024-06-07 7765/week @ 2024-06-14 6228/week @ 2024-06-21 9637/week @ 2024-06-28 6873/week @ 2024-07-05 4473/week @ 2024-07-12 5727/week @ 2024-07-19 5039/week @ 2024-07-26 4710/week @ 2024-08-02 10661/week @ 2024-08-09 7666/week @ 2024-08-16

29,096 每月下载量
用于 27 个crate(18直接)

MIT 许可证

43KB
768

resize 构建状态 crates.io

纯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);

请参阅API文档以了解所有可用方法的概述。另请参阅此示例

推荐

阅读这篇文章这篇文章关于图像重采样技术和重采样滤波器。简而言之;(使用此库的内置滤波器)使用Lanczos3进行下采样,使用Mitchell进行上采样。您还可能想要在线性颜色空间中进行下采样(但不能进行上采样)。当前库中不包括伽玛校正例程,但实际上手动实现相当简单,请参阅这里的一些基本理论。

许可证

  • 库根据MIT许可。
  • 示例中使用的图像根据CC BY-SA 3.0许可。

依赖关系

~1.3–2MB
~37K SLoC