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 is only a compression function available.
Add the following lines to your pubspec.yaml under dependencies
flutter_native_image: git: https://github.com/btastic/flutter_native_image.git
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());
ImageProperties properties = await FlutterNativeImage.getImageProperties(file.path);
It returns an ImageProperties object containing the width and the height of the 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)
Demonstrates how to use the flutter_native_image plugin.
For help getting started with Flutter, view our online documentation.
Add this to your package's pubspec.yaml file:
dependencies: flutter_native_image: ^0.0.4
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.
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 Jul 15, 2019, and provided a score, details, and suggestions below. Analysis was completed with status completed using:
Detected platforms: Flutter
References Flutter, and has no conflicting libraries.
Document public APIs. (-1 points)
26 out of 26 API elements have no dartdoc comment.Providing good documentation for libraries, classes, functions, and other API elements improves code readability and helps developers find and use your API.
flutter format to format
The package description is too short. (-20 points)
Add more detail to the
description field of
pubspec.yaml. Use 60 to 180 characters to describe the package, what it does, and its target use case.
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.