Crate image_compressor

source ·
Expand description

Image compressor

image_compressor is a library that compresses images with multiple threads. See image crate for check the extention that supported.

If you want to compress a single image, see Compressor struct.

Or if you want to compress multiple images in a certain directory, see FolderCompressor struct. It compresses images by using multithread.

To use these structs and its functions, you need to give them a function pointer or closure that calculate size and quality of new compressed images. That calculator function(or closure) need to calculate and returns a Factor base on image size and file size of the original image. To see more information about it, see Factor.

Examples

FolderCompressor and its compress function example.

The function compress all images in given origin folder with multithread at the same time, and wait until everything is done. If user set a Sender for FolderCompressor, the method sends messages whether compressing is complete.

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

let origin = PathBuf::from("origin_dir");   // original 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(origin, dest);
comp.set_cal_func(|width, height, file_size| {return Factor::new(75., 0.7)});
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.

use std::path::PathBuf;
use image_compressor::compressor::Compressor;
use image_compressor::Factor;

let origin_dir = PathBuf::from("origin").join("file1.jpg");
let dest_dir = PathBuf::from("dest");

let comp = Compressor::new(origin_dir, dest_dir, |width, height, file_size| {return Factor::new(75., 0.7)});
comp.compress_to_jpg();

Re-exports

pub use compressor::Factor;

Modules

Module that contains things related with compressing a image.
Containing functions that return a list of files or folders.
Functions related to directory manipulation.

Structs

Compressor struct for a directory.