9 stable releases

1.5.0 Jan 11, 2024
1.3.0 Dec 24, 2022
1.2.3 Nov 20, 2022
1.2.2 May 31, 2022
0.1.1 Mar 22, 2022

#159 in Images

Download history 8/week @ 2023-12-23 39/week @ 2024-01-06 7/week @ 2024-01-13 24/week @ 2024-02-17 47/week @ 2024-02-24 25/week @ 2024-03-02 39/week @ 2024-03-09 22/week @ 2024-03-16 6/week @ 2024-03-23 74/week @ 2024-03-30 18/week @ 2024-04-06

124 downloads per month

MIT license

40KB
775 lines

Image Compressor

Crates.io Documentation

A library for resizing and compressing images to jpg.

Features

Supported Image Format

Visit image crate page. This crate uses image crate for opening image files.

Examples

FolderCompressor and its compress function example.

The function compress all images in given source 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 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.

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();

Dependencies

~18MB
~160K SLoC