A comprehensive Python project that compares lossless (PNG) and lossy (JPEG) image compression techniques with an interactive web interface using Streamlit.
✅ Lossless Compression - PNG format with optimization
✅ Lossy Compression - JPEG format (quality=50) with optimization
✅ Batch Processing - Process multiple images at once
✅ Interactive Dashboard - Web-based UI with Streamlit
✅ Visualizations - Charts and graphs for analysis
✅ CSV Reports - Generate detailed compression reports
✅ Error Handling - Graceful handling of corrupted images
✅ Support - JPG, JPEG, PNG, and BMP formats
cd Image_Compression_Projectpip install -r requirements.txtOr manually install:
pip install Pillow pandas streamlit plotlyRun the standard Python script for console-based compression:
python main.pyOutput:
- Compressed images in
compressed_lossless/andcompressed_lossy/folders - CSV report in
results/report.csv - Console summary with statistics
Run the Streamlit application:
streamlit run streamlit_app.pyBrowser Access:
- Opens automatically at
http://localhost:8501 - If not, manually navigate to the URL shown in terminal
- View all compression results from the CSV report
- Interactive data table
- Key statistics (total images, average reductions, total saved)
- Download report as CSV
- Three visualization tabs:
- Size Comparison - Bar chart comparing original vs compressed sizes
- Reduction % - Bar chart showing compression reduction percentages
- Compression Ratio - Scatter plot of compression ratios
- Upload individual images for compression
- View before/after comparison
- Get instant compression metrics
- Download compressed versions
- Process all images in the
images/folder - Progress bar during processing
- Automatic CSV report generation
- View results with statistics and visualizations
Image_Compression_Project/
│
├── images/ # Place your images here
│ └── (add JPG, JPEG, PNG, BMP files)
│
├── compressed_lossless/ # Lossless PNG outputs
├── compressed_lossy/ # Lossy JPEG outputs
├── results/ # CSV reports
│ └── report.csv
│
├── main.py # CLI application
├── streamlit_app.py # Web dashboard
├── compression.py # Compression functions
├── analysis.py # Analysis functions
├── requirements.txt # Python dependencies
└── README.md # This file
Contains compression functions:
compress_lossless(input_path, output_path)- PNG compression with optimizationcompress_lossy(input_path, output_path)- JPEG compression with quality=50
Contains analysis functions:
compression_ratio(original_size, compressed_size)- Calculates compression ratiosize_reduction_percentage(original_size, compressed_size)- Calculates reduction %
CLI application that:
- Scans
images/folder for supported formats - Processes each image with both compression methods
- Generates
results/report.csv - Displays formatted summary table
Interactive web dashboard with:
- Three operational modes (View Results, Compress Images, Batch Process)
- Real-time image previews
- Interactive visualizations
- Download capabilities
- Format: PNG (Portable Network Graphics)
- Optimization: PIL optimize=True
- Use Case: Lossless compression, suitable for graphics and images requiring perfect quality
- Typical Result: 2-50% size reduction (varies by image type)
- Format: JPEG (Joint Photographic Experts Group)
- Quality Setting: 50 (0-100 scale)
- Optimization: PIL optimize=True
- RGB Conversion: Automatic handling of transparency and color modes
- Use Case: Significant file size reduction, acceptable for photographs
- Typical Result: 50-95% size reduction
Formula: Original Size / Compressed Size
- Ratio = 1.0 - No compression
- Ratio > 1.0 - Successfully compressed
- Ratio < 1.0 - File expanded (poor compression)
Formula: ((Original - Compressed) / Original) × 100
- Positive % - File reduced in size
- Negative % - File increased in size
[1/1] Processing: black-adam-the-fire-bg.jpg
✓ Lossless: -127.92% reduction
✓ Lossy: 86.67% reduction
======= STATISTICS =======
Total images processed: 1
Average lossless reduction: -127.92%
Average lossy reduction: 86.67%
Image Name,Original Size (KB),Lossless Size (KB),Lossless Compression Ratio,Lossless Reduction %,Lossy Size (KB),Lossy Compression Ratio,Lossy Reduction %
black-adam-the-fire-bg.jpg,7110.55,16206.11,0.44,-127.92,947.54,7.5,86.67
The application includes robust error handling:
- Corrupted images are skipped with error message
- Unsupported formats are ignored
- Missing folders are created automatically
- Invalid inputs are validated
pip install streamlitpip install --upgrade Pillow- Ensure images are placed in the
images/folder - Check supported formats: JPG, JPEG, PNG, BMP
- Ensure
results/folder exists (auto-created on run) - Check disk space and file permissions
- Processing Speed: Depends on image size and quantity
- Memory Usage: Moderate (loads one image at a time)
- Disk Space: Compressed files stored simultaneously
- Additional compression algorithms (WebP, AVIF)
- Quality slider for lossy compression
- Real-time preview updates
- Batch upload with drag-and-drop
- Advanced filtering and sorting
- Export to multiple formats
This project is provided as-is for educational purposes.
Created as a comprehensive image compression analysis project.
Last Updated: June 2026