A powerful, user-friendly terminal application for image compression and format conversion with an intuitive step-by-step interface.
- Convert Only (recommended): Change format while preserving quality
- Compress Only: Reduce file size while keeping original format
- Compress + Convert: Reduce quality first, then convert format
- Convert + Compress: Convert format first, then reduce quality
- Input formats: JPEG, PNG, BMP, TIFF, WebP
- Output formats: JPEG, PNG, WebP, BMP, TIFF
- Smart conversion: Handles transparency, color modes, and format-specific optimizations
- High Quality (90%): ~30% size reduction
- Medium Quality (80%): ~45% size reduction (recommended)
- Low Quality (60%): ~65% size reduction
- Custom Quality: Specify any percentage (1-100%)
- Add suffix: Customize output naming (default: "-compressed" or "-converted" for Convert Only mode)
- Keep original: Maintain same filename in output folder
- Smart conflict resolution: Auto-numbering for duplicates
- Beautiful terminal UI: Colors, progress bars, and clear feedback
- Batch processing: Handle multiple images simultaneously
- Safe workflow: Input and output folders keep originals protected
- Interactive guidance: Step-by-step configuration with smart defaults
- Python 3.7+ installed
- Terminal/Command Prompt access
-
Install dependencies:
pip install -r requirements.txt
-
Add your images:
- Place images in the
input/folder - Supported:
.jpg,.jpeg,.png,.bmp,.tiff,.webp
- Place images in the
-
Run from anywhere (if alias is set up):
mami-image
Or run locally:
./mami-image
The application guides you through these steps:
Shows all compatible images found in the input folder with file details
Choose how you want to process your images:
- Press Enter for Convert Only (recommended)
- Or select specific compression/conversion modes
- Press Enter for Medium Quality (80%)
- Or customize compression level
- Press Enter to keep original formats
- Or choose: JPEG, PNG, WebP, etc.
- Press Enter for "-compressed" suffix
- Or customize suffix or keep original names
Watch real-time progress with detailed feedback and file size comparisons
Mode: Convert Only
Format: JPEG
Result: image.png β image.jpg (in output folder)Mode: Compress Only
Quality: Medium (80%)
Result: photo.jpg β photo-compressed.jpg (smaller file)Mode: Compress + Convert
Quality: Medium (80%)
Format: WebP
Result: image.png β image-compressed.webpMode: Convert Only
Format: PNG
Suffix: -converted
Result: photo.jpg β photo-converted.pngmami-image-compress-convert/
βββ π mami-image # Main executable
βββ π app.py # Python application
βββ π¦ requirements.txt # Dependencies (Pillow)
βββ π input/ # π Place your images here
βββ π output/ # π Processed images appear here
βββ π README.md # This documentation
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β πΌοΈ IMAGE COMPRESSOR πΌοΈ β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
π Found 3 image(s) in input folder:
πΈ 1. vacation-photo.jpg
π 4032Γ3024 pixels | πΎ 3.45 MB
πΌοΈ 2. screenshot.png
π 1920Γ1080 pixels | πΎ 2.10 MB
π· 3. portrait.jpeg
π 2400Γ1600 pixels | πΎ 1.85 MB
β οΈ Are these the correct images to process?
Continue? (y/n): y
βοΈ Processing Mode Selection
Choose processing mode:
1. Compress + Convert
2. Convert + Compress
3. Compress Only
4. Convert Only [RECOMMENDED]
Enter your choice (or press Enter): [ENTER]
π Output Format Selection
Select output format:
1. Keep Original [RECOMMENDED]
2. JPEG (.jpg)
3. PNG (.png)
4. WebP (.webp)
Enter your choice (or press Enter): 4
π Output Filename Settings
Choose output filename format:
1. Add suffix to filename [RECOMMENDED]
2. Keep original filename
Enter your choice (or press Enter): [ENTER]
Suffix (press Enter for '-converted'): -webp
π Processing images: Convert Only β WebP
[ββββββββββββββββββββββββββββββββββββββββββββββββββββ] 100.0% (3/3)
πΈ Processing: vacation-photo.jpg
β
Success: 3.45MB β 2.12MB (38.5% reduction)
πΎ Saved as: vacation-photo-webp.webp
π Processing Summary:
β
Successfully processed: 3
πΎ Total size reduction: 42.3%
π Processing completed! Check the output folder.
- Use the GitHub Issues tab
- Include steps to reproduce
- Mention your OS and Python version
- Attach sample images if relevant (without personal data)
- Describe the feature and its use case
- Explain why it would be valuable
- Consider if it fits the project's scope
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Test thoroughly
- Commit with clear messages
- Push and create a Pull Request
Q: Will this overwrite my original images?
A: No! Original images stay safe in the input/ folder. Processed images go to output/.
Q: What happens if I run out of space? A: The tool shows file sizes before processing. You can skip large files if needed.
Q: Can I undo changes? A: Since originals are preserved, you can always restart with different settings.
Q: How do I convert just one image?
A: Put the single image in the input/ folder and run normally.
Q: What's the difference between the processing modes? A:
- Convert Only: Changes format without quality loss
- Compress Only: Reduces file size without changing format
- Compress + Convert: Reduces quality first, then changes format
- Convert + Compress: Changes format first, then reduces quality
"No module named PIL"
pip install Pillow"Permission denied"
chmod +x mami-image"No images found"
- Check that images are in the
input/folder - Verify file formats are supported (.jpg, .png, .bmp, .tiff, .webp)
This project is licensed under the MIT License - see the LICENSE file for details.
We take security seriously. Please report any vulnerabilities to engineering@mamiteam.com.
We welcome contributions! Please see our Contributing Guidelines for details on:
- π Reporting bugs
- π‘ Suggesting features
- π§ Submitting code changes
- π Improving documentation
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
If this project helped you, please:
- β Star the repository
- π Report any issues you find
- π‘ Suggest improvements
- π’ Share it with others
Last updated: September 2025
Made with β€οΈ by Mamikos Engineering Team
For questions, support, or collaboration opportunities, reach out to us:
- Email: engineering@mamiteam.com
- Issues: Use GitHub Issues for bug reports and feature requests
- Discussions: Use GitHub Discussions for questions and community chat
Built with Pillow for robust image processing.