image 3.1.2 image: ^3.1.2 copied to clipboard
Provides server and web apps the ability to load, manipulate, and save images with various image file formats including PNG, JPEG, GIF, BMP, WebP, TIFF, TGA, PSD, PVR, and OpenEXR.
image #
Overview #
A Dart library providing the ability to load, save and manipulate images in a variety of different file formats.
The library is written entirely in Dart and has no reliance on dart:io
, so it can be used for both
server and web applications.
Performance Warning #
Because this library is written entirely in Dart and is a not native executed library, its performance will not be as fast as a native library.
Supported Image Formats #
Read/Write
- PNG / Animated APNG
- JPEG
- Targa
- GIF / Animated GIF
- PVR(PVRTC)
- ICO
- BMP
Read Only
- WebP / Animated WebP
- TIFF
- Photoshop PSD
- OpenEXR
Write Only
- CUR
Documentation #
API #
Examples #
Format Decoding Functions #
Example #
Load an image asynchronously and resize it as a thumbnail.
import 'dart:io';
import 'dart:isolate';
import 'package:image/image.dart';
class DecodeParam {
final File file;
final SendPort sendPort;
DecodeParam(this.file, this.sendPort);
}
void decodeIsolate(DecodeParam param) {
// Read an image from file (webp in this case).
// decodeImage will identify the format of the image and use the appropriate
// decoder.
var image = decodeImage(param.file.readAsBytesSync())!;
// Resize the image to a 120x? thumbnail (maintaining the aspect ratio).
var thumbnail = copyResize(image, width: 120);
param.sendPort.send(thumbnail);
}
// Decode and process an image file in a separate thread (isolate) to avoid
// stalling the main UI thread.
void main() async {
var receivePort = ReceivePort();
await Isolate.spawn(
decodeIsolate, DecodeParam(File('test.webp'), receivePort.sendPort));
// Get the processed image from the isolate.
var image = await receivePort.first as Image;
await File('thumbnail.png').writeAsBytes(encodePng(image));
}