Um algoritmo de compressão de imagens com perda, baseado em detecção de nível de detalhe por blocos, implementado em Rust.
Apenas coloque pixlzr = "0"
nas dependências ([dependencies]
) em seu Cargo.toml
.
Agora, a caixa pixlzr
tem duas APIs paralelas, com diferentes usos e funcionalidades.
O uso básico, de reduzir / encolher um elemento image::DynamicImage
, é presente em ambos. Mas no futuro, a API antiga será ou apagada ou reescrita baseada na nova, que suporta salvar / ler arquivos.
use image::{open, DynamicImage};
use pixlzr::{process, tree_process, tree_full_process};
// ...
let image: DynamicImage = open("img.png")?;
process(&image, 64, Some(|v| v / 4.0))
.save("img-processada.png")?;
tree_process(&image, 64, 0.25, Some(|v| v / 6.0))
.save("img-processada-tree.png")?;
tree_full_process(&image, 0.25, Some(|v| v / 6.0))
.save("img-processada-tree-full.png")?;
// Importação
use image::{open, DynamicImage};
use pixlzr::{FilterType, Pixlzr};
// Converter para
let png: DynamicImage = open("img.png");
let mut pix = Pixlzr::from_image(&img, 64, 64u32);
pix.shrink_by(FilterType::Gaussian, 0.8);
pix.save("imagem pix-lizada.pixlzr")?;
// Converter de volta
let pix = Pixlzr::open("imagem pix-lizada.pixlzr")?;
let img = pix.to_image(FilterType::Nearest)?;
img.save("imagem-reduzida.png");
A CLI pode ser entendida com um simples uso de pixlzr -h
.
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, --shrink-by <SHRINK_BY> The shrinking factor [default: 1]
--filter <FILTER> The filter used when resizing the image blocks [default: lanczos3] [possible values: nearest, triangle, catmull-rom, gaussian, lanczos3]
-h, --help Print help (see more with '--help')
-V, --version Print version
O programa converte de e para o formato pixlzr
, com uso da caixa image
.
Ainda a ser escrito...
Favor conferir GitHub:guiga-zalu/smart-pixelizer, já que é a implementação em Node JS.