A modern, cross-platform compression utility for folder-based archival using Canonical Huffman Coding algorithms. Built with Qt Widgets and C++, Compresso provides efficient lossless compression while preserving complete directory structures.
Compresso is designed as a specialized folder compression tool that addresses the need for efficient, structure-preserving archival solutions. Unlike traditional archive formats, Compresso applies Canonical Huffman Coding to individual files while maintaining the integrity of nested directory hierarchies.
- Individual File Optimization: Each file is compressed independently using optimized Huffman codes
- Structure Preservation: Complete directory trees are maintained with perfect fidelity
- Minimal Overhead: Efficient binary storage with compact metadata headers
- Performance Oriented: Multithreaded operations with real-time progress tracking
- User-Centric Design: Intuitive interface suitable for both technical and non-technical users
The application features a clean, intuitive interface designed for seamless user experience across all platforms.
- Folder-Based Compression: Processes entire directory structures recursively
- Canonical Huffman Implementation: Lexicographically sorted codes for optimal efficiency
- Lossless Compression: Perfect reconstruction of original files and folder hierarchy
- Binary Optimization: Bit-level encoding for maximum space efficiency
- Multithreaded Processing: Background operations using QtConcurrent framework
- Progress Monitoring: Real-time feedback during compression/decompression operations
- Intelligent Naming: Automatic suffix handling for output directories
- Error Management: Comprehensive error handling with user-friendly notifications
- Cross-Platform Support: Consistent experience across Windows, Linux, and macOS
- File Analysis: Tokenization and frequency analysis of input files
- Tree Construction: Building optimal Huffman trees for each file
- Canonical Conversion: Transform to canonical Huffman codes for standardization
- Binary Encoding: Bit-level compression with efficient storage
- Metadata Generation: Minimal header creation for reconstruction data
- Metadata Parsing: Reading compression headers and codebook information
- Tree Reconstruction: Rebuilding canonical Huffman trees
- Binary Decoding: Converting compressed bitstreams back to original data
- Structure Recreation: Restoring complete directory hierarchy
- Qt Framework (5.x or 6.x)
- C++17 compatible compiler
- CMake or qmake build system
- Git version control
git clone https://github.com/yourusername/compresso.git
cd compresso
# Open Compresso.pro in Qt Creator and build
git clone https://github.com/yourusername/compresso.git
cd compresso
qmake Compresso.pro
make
git clone https://github.com/yourusername/compresso.git
cd compresso
mkdir build && cd build
cmake ..
make
- Launch the Compresso application
- Click "Browse Folder" to select the target directory
- Click "Compress" to begin the compression process
- Monitor progress through the real-time progress indicator
- Locate the output in
[DirectoryName] (Compressed)
folder
- Select a directory with the "(Compressed)" suffix
- Click "Decompress" to initiate the restoration process
- Monitor decompression progress
- Access restored files in
[DirectoryName] (Decompressed)
folder
Compressed files use the .compresso
extension and contain:
- Canonical Huffman codebook metadata
- Compressed binary data streams
- Directory structure information
- File attribute preservation data
Compression Engine
- Huffman tree construction and optimization
- Canonical code generation algorithms
- Binary I/O operations with bitstream handling
User Interface
- Qt Widgets-based GUI implementation
- Asynchronous operation handling with QFutureWatcher
- Progress tracking and user feedback systems
File Management
- Recursive directory traversal
- Metadata preservation and restoration
- Cross-platform file system compatibility
- Folder-only compression (individual files not supported)
- Proprietary format compatibility (only Compresso-generated archives)
- No encryption or password protection capabilities
- Performance considerations for extremely large files due to bit-level operations
- Individual file compression support
- Encryption and security features
- Additional compression algorithms
- Performance optimizations for large datasets
This project provided extensive experience in:
Algorithm Implementation
- Huffman tree construction and traversal algorithms
- Canonical Huffman code generation and optimization
- Binary data manipulation and bitstream processing
Software Engineering
- Asynchronous programming with Qt's concurrent framework
- Exception-safe multithreaded application design
- Cross-platform GUI development using Qt Widgets
Systems Programming
- Low-level binary file I/O operations
- Memory-efficient data structure design
- File system interaction and metadata handling
Contributions are welcome through standard GitHub workflows:
- Fork the repository
- Create a feature branch
- Implement changes with appropriate tests
- Submit a pull request with detailed description
This project is licensed under the MIT License. See the LICENSE file for complete terms and conditions.
For questions, issues, or feature requests, please use the GitHub issue tracker or contact the development team through the repository.
Compresso - Efficient folder compression through advanced algorithmic implementation.