A Dart package for compressing image files to fit within a specified size range, while maintaining the best possible quality. Features
- Compress images to fit within a specified size range (minimum and maximum file size)
- Maintains the highest possible quality while meeting size constraints
- Handles both resizing and quality adjustment for optimal results
- Provides clear error messages if compression fails
Add this to your package's pubspec.yaml file:
dependencies:
size_ranged_image_compressor: ^1.0.0
Then run:
$ flutter pub get
Here's a simple example of how to use the size_ranged_image_compressor:
import 'dart:io';
import 'package:size_ranged_image_compressor/size_ranged_image_compressor.dart';
void main() async {
File imageFile = File('path/to/your/image.jpg');
var result = await ImageCompressor.compressSingleFileWithCustomSize(
imageFile,
minimum: 50 * 1024, // 50 KB
maximum: 200 * 1024, // 200 KB
);
result.fold(
(error) => print('Compression failed: $error'),
(compressedFile) => print('Compressed file size: ${compressedFile.lengthSync()} bytes'),
);
}
This example demonstrates how to compress an image file to a size between 50 KB and 200 KB.
static Future> compressSingleFileWithCustomSize(
File file, {
required int minimum,
required int maximum,
int qualityStep = 2,
})
Compresses a single image file to fit within a specified size range.
- file: The original image file to be compressed. Must be a valid image file.
- minimum: The minimum allowed file size in bytes. Must be greater than 0 and less than or equal to maximum.
- maximum: The maximum allowed file size in bytes. Must be greater than or equal to minimum.
- qualityStep: The step size for reducing quality during compression. Default is 2. Lower values result in more gradual quality reduction.
An Either containing either an error message (String) if compression fails, or the compressed File if successful.
ArgumentError if maximum is less than minimum.
The package uses the Either type for error handling. If compression fails, it will return a Left with an error message. If successful, it will return a Right with the compressed File.
- "File is smaller than the minimum size requirement"
- "Compression failed"
- "Unable to compress file to desired size range"
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the BSD 2-Clause License - see the LICENSE file for details.