image_compressor 1.5.2

A image compressing module using mozjpeg, and image crates.
Documentation
# Image Compressor

[![Crates.io](https://img.shields.io/crates/v/image_compressor.svg)](https://crates.io/crates/image_compressor)  [![Documentation](https://docs.rs/image/badge.svg)](https://docs.rs/image_compressor/)

A library for resizing and compressing images to **jpg**.

## Features

- Compress and resize a single image to jpg format. 
- Multithreading. 
- Customize the quality and size ratio of compressed images. 
- Send a completion message via `mpsc::Sender` (see [Using Message Passing to Transfer Data Between Threads]https://doc.rust-lang.org/book/ch16-02-message-passing.html in rust tutorial).

## Supported Image Format

Visit [image](https://crates.io/crates/image) crate page. 
This crate uses image crate for opening image files. 

## Examples

#### `FolderCompressor` and its `compress` function example.

The function will compress all images, using multithreading, in a given source folder and will wait until everything is done. 
If user set a `Sender` for `FolderCompressor`, the method sends messages whether compressing is complete. 

```rust
use std::path::PathBuf;
use std::sync::mpsc;
use image_compressor::FolderCompressor;
use image_compressor::Factor;

let source = PathBuf::from("source_dir");   // source directory path
let dest = PathBuf::from("dest_dir");       // destination directory path
let thread_count = 4;                       // number of threads
let (tx, tr) = mpsc::channel();             // Sender and Receiver. for more info, check mpsc and message passing. 

let mut comp = FolderCompressor::new(source, dest);
comp.set_factor(Factor::new(80., 0.8));
comp.set_thread_count(4);
comp.set_sender(tx);

match comp.compress(){
    Ok(_) => {},
    Err(e) => println!("Cannot compress the folder!: {}", e),
}
```

#### `Compressor` and `compress_to_jpg` example.

Compressing just a one image. 
```rust
use std::path::PathBuf;
use image_compressor::compressor::Compressor;
use image_compressor::Factor;

let source = PathBuf::from("source").join("file1.jpg");
let dest = PathBuf::from("dest");
let comp = Compressor::new(source_dir, dest_dir);
compressor.set_factor(Factor::new(80., 0.8));
comp.compress_to_jpg();
```