Search code examples
dartflutterimage-resizing

How can I read (from disk) and resize an image, in Flutter/Dart


In Flutter/Dart, how can I perform the following 3 steps:

  1. Read an image from disk,
  2. Read its original dimensions (width and height),
  3. Resize it.

Note: I must be able to display the final result with a regular Flutter Image widget.

CLARIFICATION: I don't want to save the image, but I do want to actually resize it in memory.


Solution

  • You can read image from the disk using the image.file constructor.

    For more features you can use the Image library

    A Dart library providing the ability to load, save and manipulate images in a variety of different file formats.

    Sample from the documentation examples

    Load a jpeg, resize it and save it as a png

        import 'dart:io' as Io;
        import 'package:image/image.dart';
        void main() {
          // Read a jpeg image from file.
          Image image = decodeImage(new Io.File('test.jpg').readAsBytesSync());
    
          // Resize the image to a 120x? thumbnail (maintaining the aspect ratio).
          Image thumbnail = copyResize(image, width: 120);
    
          // Save the thumbnail as a PNG.
          new Io.File('out/thumbnail-test.png')
                ..writeAsBytesSync(encodePng(thumbnail));
        }