Um algoritmo de compressão de imagens com perda, baseado em detecção de nível de detalhe por blocos, implementado em Rust.
# pixzlr
[![Vezes baixado](https://img.shields.io/crates/d/pixlzr?logo=rust&style=for-the-badge&label=Vezes%20baixado)](https://crates.io/crates/pixlzr)
[![Vezes baixado (recentemente)](https://img.shields.io/crates/dr/pixlzr?label=Vezes%20baixado%20%28recentemente%29&logo=rust&style=for-the-badge)](https://crates.io/crates/pixlzr)
[![Versão do pacote](https://img.shields.io/crates/v/pixlzr?label=Vers%C3%A3o%20do%20pacote&logo=rust&style=for-the-badge)](https://crates.io/crates/pixlzr)
![Última atualização no GitHub](https://img.shields.io/github/last-commit/guiga-zalu/pixlzr-rust?label=%C3%9Altima%20atualiza%C3%A7%C3%A3o%20no%20GitHub&logo=github&style=flat-square)
## Instalando
Apenas coloque `pixlzr = "0"` nas dependências (`[dependencies]`) em seu `Cargo.toml`.
## Utilização
### Antes de usar
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.
### Usando a API antiga
```rust
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")?;
```
### Usando a nova API
```rust
// Importação
use image::{open, DynamicImage};
use pixlzr::{FilterType, Pixlzr};
```
```rust
// 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")?;
```
```rust
// Converter de volta
let pix = Pixlzr::open("imagem pix-lizada.pixlzr")?;
let img = pix.to_image(FilterType::Nearest)?;
img.save("imagem-reduzida.png");
```
## CLI
A CLI pode ser entendida com um simples uso de `pixlzr -h`.
```txt
Pixlzr - A rust lib and CLI for the pixlzr image format
Usage: pixlzr [OPTIONS] --input --output