Native Flutter Image tools
This plugin aims to have native tools to resize images and reduce their quality by compression. The code is somewhat hacky (especially the iOS part), but it works for my needs and hasn't crashed on me. Feel free to improve it if you want to.
Right now there are a few functions. Please find some examples below.
Add the following lines to your pubspec.yaml under dependencies
Compress an image #
File compressedFile = await FlutterNativeImage.compressImage(file.path, quality: quality, percentage: percentage);
You have to give it a file from the file system and optionally provide a quality (1-100) and a resizing percentage (1-100). Each platform will use it's proper tools to handle the resizing.
To resize the image to the certain size, use following code:
ImageProperties properties = await FlutterNativeImage.getImageProperties(file.path); File compressedFile = await FlutterNativeImage.compressImage(file.path, quality: 80, targetWidth: 600, targetHeight: 300);
Keep aspect ratio of the file:
ImageProperties properties = await FlutterNativeImage.getImageProperties(file.path); File compressedFile = await FlutterNativeImage.compressImage(file.path, quality: 80, targetWidth: 600, targetHeight: (properties.height * 600 / properties.width).round());
Get image properties #
ImageProperties properties = await FlutterNativeImage.getImageProperties(file.path);
It returns an ImageProperties object containing the width and the height of the image.
Crop an image #
File croppedFile = await FlutterNativeImage.cropImage(file.path, originX, originY, width, height);
Returns a file containing the image cropped with the given dimensions.
Alexis Leblond (a-leblond) the image properties feature.
Eugene Strokin the resize to target height/width feature
Shoutouts to Trevor from Vocaro.com. He had the fitting algorithm for resizing images in Objective-C.
For preserving exif information, I took the code from googles image_picker github (https://github.com/flutter/plugins/tree/master/packages/image_picker)
- Reformatted flutter_native_image.dart
- Bump version to get the analysis going again
- Removed some sample code
- Added documentation for public API's
- Updated to AndroidX
- Changed constraints to only support flutter >=1.10.0
[0.0.1] - TODO: Add release date.
- Initial functionality
Demonstrates how to use the flutter_native_image plugin.
Getting Started #
For help getting started with Flutter, view our online documentation.
Use this package as a library
1. Depend on it
Add this to your package's pubspec.yaml file:
dependencies: flutter_native_image: ^0.0.5+2
2. Install it
You can install packages from the command line:
$ flutter pub get
Alternatively, your editor might support
flutter pub get.
Check the docs for your editor to learn more.
3. Import it
Now in your Dart code, you can use:
Describes how popular the package is relative to other packages. [more]
Code health derived from static analysis. [more]
Reflects how tidy and up-to-date the package is. [more]
Weighted score of the above. [more]
We analyzed this package on Feb 21, 2020, and provided a score, details, and suggestions below. Analysis was completed with status completed using:
- Dart: 2.7.1
- pana: 0.13.5
- Flutter: 1.12.13+hotfix.7
Package is pre-v0.1 release. (-10 points)
While nothing is inherently wrong with versions of
0.0.*, it might mean that the author is still experimenting with the general direction of the API.