simple_native_image_compress 1.1.0 copy "simple_native_image_compress: ^1.1.0" to clipboard
simple_native_image_compress: ^1.1.0 copied to clipboard

A simple native image compression library for Flutter that supports Windows and Linux as well

simple_native_image_compress #

A simple native image compression library for Flutter written in rust using flutter_rust_bridge, image, cargokit and kamadak-exif

Why? #

  1. For some reason, image compression in Dart is slow. Even with isolate.
  2. There is no native libraries that supports WINDOWS & LINUX when it comes to image compression.

What does it do? #

  • If path for an image file is given, it will resize and return Jpeg/WebP image as Uint8List.

Prerequisite #

  1. Rust
  2. Android NDK for Android

Supported Output Formats #

  • Jpeg
  • WebP

Sampling Filter Types #

  • 5 types of sampling filters are available and can be selected

    1. Nearest, // Nearest Neighbor
    2. Triangle, // Linear Filter (DEFAULT)
    3. CatmullRom, // Cubic Filter
    4. Gaussian, // Gaussian Filter
    5. Lanczos3, // Lanczos with window 3
  • when samplingFilter is null, FilterType.Triangle is set to be default.

  • you can read more about sampling filters here image crate doc

Example #

Call Library as a Singleton #

final compress = SimpleNativeImageCompress();

"contain" will make the image fit into the given max width/height. #

try{
  final bytes = await compress.contain(
    filePath: yourFilePath,
    compressFormat: CompressFormat.Jpeg,
    quality: 90,
    maxWidth: 512,
    maxHeight: 512,
    samplingFilter: FilterType.Lanczos3
  );
} catch (e) {
  print(e);
}

"fitWidth" will make the image fit into the given max width. #

try{
  final bytes = await compress.fitWidth(
    filePath: yourFilePath,
    compressFormat: CompressFormat.WebP,
    maxWidth: 512,
    samplingFilter: FilterType.Lanczos3
  );
} catch (e) {
  print(e);
}

"fitHeight" will make the image fit into the given max height. #

try{
  final bytes = await compress.fitHeight(
    filePath: yourFilePath,
    compressFormat: CompressFormat.WebP,
    maxHeight: 512,
    samplingFilter: FilterType.Lanczos3
  );
} catch (e) {
  print(e);
}

Default values #

  • Default value for width and/or height is 1024 px
  • Default value for Jpeg quality is 80 (For webP Quality does nothing)
19
likes
0
points
388
downloads

Publisher

verified publisherhyunwookim.net

Weekly Downloads

A simple native image compression library for Flutter that supports Windows and Linux as well

Homepage
Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

ffi, flutter, flutter_rust_bridge, meta, plugin_platform_interface, uuid

More

Packages that depend on simple_native_image_compress