smart_image_compress 0.1.0
smart_image_compress: ^0.1.0 copied to clipboard
Automatic image compression for Flutter apps. Intelligently compresses images to configurable size/resolution limits while preserving quality. Supports batch processing via isolates, image picker inte [...]
Changelog #
All notable changes to the smart_image_compress package will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.1.0 - 2026-02-20 #
Initial Release 🎉 #
Added
-
Core Compression Features
CompressionServicefor intelligent image compressionCompressConfigfor configurable compression parameters- Single image compression with
compressSingleImage() - Batch compression via isolates with
compressBatchInIsolate() - Automatic EXIF orientation correction
- Support for WebP and JPEG formats
- Iterative quality reduction algorithm
- Progress tracking callbacks (0.0-1.0 for single, (int, int) for batch)
- Temperature file lifecycle management
-
Widget Components
OptimizedImagePickerwidget for easy image selection and compression- Support for single and multi-image selection
- Camera and gallery sources
- Real-time progress dialog with
LinearProgressIndicator - Custom trigger widget support
- Platform-aware permission handling (iOS/Android)
-
File Management
cleanupTemporaryFiles()- Delete all tracked temporary filescleanupOldTemporaryFiles(Duration)- Age-based cleanup- Automatic temp file tracking via singleton service
- Safe fallback to original file on errors
-
Configuration Options
maxSizeKB- Target file size (default: 300 KB)maxResolution- Maximum image dimension (default: 1600 px)initialQuality- Starting compression quality (default: 80%)format- Output format WebP or JPEG (default: WebP)keepExif- Preserve EXIF metadata (default: true)autoCorrectOrientation- Auto-fix image orientation (default: true)
-
Developer Experience
- 100% API documentation with examples
- Comprehensive README with quick start and advanced usage
- Example app demonstrating all features
- Zero analyzer warnings
- Full null safety compliance
- Dart 3.5+ patterns and features
-
Error Handling
- Graceful fallback to original file on compression failure
- Permission request with user-friendly messages
- Isolate error handling with proper cleanup
- Try-catch with detailed logging via
debugPrint() - Handles missing permissions elegantly
-
Performance Optimizations
- Isolate-based batch processing for UI responsiveness
- Single-image compression on main thread for small files
- Quality reduction in 8% steps for smooth size/quality curve
- Best-of approach returns optimal compression result
- Minimal dependencies (4 core packages)
Technical Details #
-
Minimum Requirements
- Dart 3.5.0+
- Flutter 3.24.0+
- Android API 21+
- iOS 11.0+
-
Dependencies
flutter_image_compress: ^2.4.0image_picker: ^1.2.1permission_handler: ^11.3.1path_provider: ^2.1.5
Known Limitations #
- Web platform not supported (uses platform plugins)
- No in-memory caching in v1 (focus on correctness over performance)
- Isolate batch compression reports final progress only (not per-image)
- Maximum image dimension bounds based on device capabilities
Future Roadmap #
Planned for v0.2.0
- ❌ Stream-based progress for isolate compression
- ❌ Optional LRU memory caching
- ❌ Web platform support
- ❌ Video thumbnail compression
- ❌ Batch upload with resume capability
- ❌ Color space optimization modes
- ❌ Advanced filter support (blur, sharpen, etc.)
Considered for Future Releases
- Multi-language documentation
- More aggressive compression algorithms
- Integration with cloud storage SDKs
- Custom compression format support
- Image metadata editor
Thanks #
Thanks to:
- flutter_image_compress - Core compression engine
- image_picker - Platform image selection
- permission_handler - Permission management
- path_provider - Temp file directory access
Version History Format #
Semantic Versioning #
- MAJOR (0.x.0): Breaking API changes
- MINOR (0.0.x): New features, backward compatible
- PATCH (0.0.0): Bug fixes and improvements
Release Schedule #
- Odd minor versions (0.1.x, 0.3.x) = feature updates
- Even minor versions (0.2.x, 0.4.x) = performance updates and refinements
Last Updated: February 20, 2026 Package Author: [Your Name] License: MIT