6 个版本
0.3.0 | 2024 年 2 月 1 日 |
---|---|
0.2.2 | 2023 年 3 月 16 日 |
0.2.1 | 2023 年 1 月 11 日 |
0.1.1 | 2022 年 10 月 7 日 |
#131 in 压缩
每月 25 次下载
3MB
1.5K SLoC
基于块级别细节检测的损失性图像压缩算法,用 Rust 实现。
pixzlr
示例
> pixlzr -i <image input> -o <image output> --force
安装
只需将 pixlzr = "0"
作为 [dependencies]
之一添加到您的 Cargo.toml
。
通过 API 使用
在使用之前
现在,crate pixlzr
有两个并行 API,具有不同的用途和功能。
基本用途,减少/缩小 crate image::DynamicImage
,存在于两者中。但在未来,旧 API 将被删除或基于新 API 重新编写,新 API 支持文件保存/读取。
使用旧 API
use image::{open, DynamicImage};
use pixlzr::process::{
process,
tree::{
process as tree_process,
full as tree_full_process
}
};
// ...
let image: DynamicImage = open("img.png")?;
process(&image, 64, Some(|v| v / 4.0)): DynamicImage
.save("img-processed.png")?;
tree_process(&image, 64, 0.25, Some(|v| v / 6.0)): DynamicImage
.save("img-processed-tree.png")?;
tree_full_process(&image, 0.25, Some(|v| v / 6.0)): DynamicImage
.save("img-processed-tree-full.png")?;
使用新 API
// Importing
use image::DynamicImage;
use pixlzr::{FilterType, Pixlzr};
// Convert to
let png: DynamicImage = ::image::open("img.png");
let mut pix = Pixlzr::from_image(&img, 64, 64u32);
pix.shrink_by(FilterType::Gaussian, 0.8);
pix.save("pix-lized image.pixlzr")?;
// Convert from
let pix = Pixlzr::open("pix-lized image.pixlzr")?;
let img = pix.to_image(FilterType::Nearest)?;
img.save("reduced-img.png");
CLI
对于 CLI 使用,安装
> cargo install pixlzr
可以使用 pixlzr -h
运行来理解 CLI。
Pixlzr - A rust lib and CLI for the pixlzr image format
Usage: pixlzr [OPTIONS] --input <INPUT> --output <OUTPUT>
Options:
-i, --input <INPUT>
The input image file
-o, --output <OUTPUT>
The output image file
-b, --block-width <BLOCK_WIDTH>
The width of each block
[default: 64]
--block-height <BLOCK_HEIGHT>
The height of each block
-k, --shrinking-factor <SHRINKING_FACTOR>
The shrinking factor: [+|-][1/][D][.D]
If negative, is passed through max(0, 1 - x)
[default: 1]
-f, --filter <FILTER>
The filter used when resizing the image blocks
[default: lanczos3]
[possible values: nearest, triangle, catmull-rom, gaussian, lanczos3]
-d, --direction-wise <DIRECTION_WISE>
Direction-wise scan
[possible values: true, false]
--force
If image-2-image, force shrinking?
-h, --help
Print help (see more with '--help')
-V, --version
Print version
它使用 crate image
将数据从一种格式转换为另一种格式。
核心概念
待编写...
请检查 GitHub:guiga-zalu/smart-pixelizer,因为它是在 Node JS 中的实现。
依赖项
~3–7MB
~93K SLoC