image 4.12.0 copy "image: ^4.12.0" to clipboard
image: ^4.12.0 copied to clipboard

Dart Image Library provides server and web apps the ability to load, manipulate, and save images with various image file formats.

Dart Image Library #

Dart CI pub package

Overview #

The Dart Image Library loads, saves and manipulates images in a variety of image file formats.

It's written in pure Dart with no native dependencies, so it works everywhere Dart does: command-line apps, servers, Flutter on every platform, and the web.

Features include:

Documentation #

Supported Image Formats #

Read/Write

  • JPEG
  • PNG / Animated PNG
  • GIF / Animated GIF
  • WebP / Animated WebP (lossless and lossy)
  • BMP
  • TIFF
  • TGA
  • ICO
  • PVR

Read Only

  • PSD
  • EXR
  • PNM (PBM, PGM, PPM)

Write Only

  • CUR

Getting started #

dart pub add image
import 'package:image/image.dart' as img;

Examples #

Create an image, set pixel values, and save it as a PNG:

import 'dart:io';
import 'package:image/image.dart' as img;

Future<void> main() async {
  // Create a 256x256 8-bit (default) RGB (default) image.
  final image = img.Image(width: 256, height: 256);
  // Iterate over its pixels.
  for (final pixel in image) {
    pixel
      // Set the red channel to the x position, creating a gradient.
      ..r = pixel.x
      // Set the green channel to the y position.
      ..g = pixel.y;
  }
  // Encode the image to the PNG format.
  final png = img.encodePng(image);
  // Write the PNG data to a file.
  await File('image.png').writeAsBytes(png);
}

Load a JPEG, make a thumbnail, and save it:

import 'dart:io';
import 'package:image/image.dart' as img;

Future<void> main() async {
  final bytes = await File('photo.jpg').readAsBytes();
  // Decode the JPEG. This returns null, or throws an ImageException, if the
  // data isn't a valid JPEG.
  final image = img.decodeJpg(bytes);
  if (image == null) {
    return;
  }
  // Resize to 120 pixels wide, keeping the aspect ratio. The EXIF orientation
  // of the photo is applied.
  final thumbnail = img.copyResize(image, width: 120);
  // Encode as a JPEG and save it.
  await File('thumbnail.jpg').writeAsBytes(img.encodeJpg(thumbnail, quality: 85));
}

Do the same work in a separate isolate with the Command API, so it doesn't block the main isolate:

import 'package:image/image.dart' as img;

Future<void> main(List<String> args) async {
  final path = args.isNotEmpty ? args[0] : 'test.png';
  final cmd = img.Command()
    // Decode the image file at the given path.
    ..decodeImageFile(path)
    // Resize the image to a width of 64 pixels, keeping the aspect ratio.
    ..copyResize(width: 64)
    // Write the image to a PNG file (the format comes from the file extension).
    ..writeToFile('thumbnail.png');
  // On platforms that support isolates, execute the commands on a separate
  // isolate. Otherwise (on the web), they run on the main thread.
  await cmd.executeThread();
}

See the tutorial for more.

1.76k
likes
160
points
7.89M
downloads

Documentation

Documentation
API reference

Publisher

verified publisherloki3d.com

Weekly Downloads

Dart Image Library provides server and web apps the ability to load, manipulate, and save images with various image file formats.

Repository (GitHub)
View/report issues

License

MIT (license)

Dependencies

archive

More

Packages that depend on image