Skip to content

Latest commit

 

History

History
102 lines (70 loc) · 2.82 KB

README.md

File metadata and controls

102 lines (70 loc) · 2.82 KB

Zip Huff

A ZIP extractor and compressor made in Rust using the Huffman coding algorithm. A GUI-based application for file compression and extraction using the Huffman coding algorithm, built with Rust and Egui.

Overview

This project provides a graphical user interface for compressing and extracting text files using the Huffman coding algorithm. It supports both word-based and character-based compression modes.

Features

  • File Compression: Compress text files using Huffman coding.
  • File Extraction: Extract compressed files back to their original form.
  • Two Modes: Supports both word-based and character-based compression.
  • User-Friendly GUI: Easy-to-use graphical interface built with Egui.
  • Progress and Timing: Displays progress and elapsed time for operations.

Screenshots

zip huff zip huff2

Prerequisites

bit-vec = { version = "0.6.3", features = ["serde"] }
rayon = "1.10.0"
serde = { version = "1.0.202", features = ["derive"] }
rmp-serde = "1.3.0"
clap = { version = "4.5.4", features = ["derive"] }
eframe = "0.27.2"
rfd = "0.10.0"

Clone the Repository

git clone https://github.com/itsmohitnarayan/ziphuff.git
cd ziphuff

Build the Project

cargo build --release

Run the Application

cargo run --release

GUI Controls

  1. Input File: Browse and select the input file.
  2. Output File: Specify the output file path.
  3. Action: Choose between Compress and Extract.
  4. Mode: Choose between Words and Chars.
  5. Run: Click to start the compression or extraction process.

Example

  • Compress a file:

    1. Select an input file.
    2. Specify the output file path.
    3. Choose Compress as the action.
    4. Select either Words or Chars mode.
    5. Click Run.
  • Extract a file:

    1. Select a compressed input file.
    2. Specify the output file path.
    3. Choose Extract as the action.
    4. Select the mode that was used for compression (Words or Chars).
    5. Click Run.

License

This project is licensed under the GNU Affero General Public License v3.0.

Contributing

  1. Fork the repository.
  2. Create your feature branch (git checkout -b feature/your-feature).
  3. Commit your changes (git commit -am 'Add some feature').
  4. Push to the branch (git push origin feature/your-feature).
  5. Create a new Pull Request.

Authors

Mentor