Nyoman Gunartha
Nyoman Gunartha

Reputation: 87

Resize image very slow when it process

I want to resize an image and when run my code but resize process is very slow. My code as below :

void _selectImage() async {
try {
  final checkDataImage =
      await _imagePicker.pickImage(source: ImageSource.camera);

  if (checkDataImage != null) {
    print(checkDataImage.name);
    print(checkDataImage.path);
    setState(() {
      pickedImage = checkDataImage;
    });
  }
} catch (err) {
  print(err);
  pickedImage = null;
}

final tempDir = await getTemporaryDirectory();
final path = tempDir.path;

Img.Image image = Img.decodeImage(await pickedImage.readAsBytes());
Img.Image smallerImg = Img.copyResize(image, width: 500);

int rand = new Math.Random().nextInt(999999999);

var compressImg = new File('$path/image_$rand.jpg')
  ..writeAsBytesSync(Img.encodeJpg(smallerImg, quality: 90));     

setState(() {
  if (!mounted) return;
  _imageUpload = compressImg;
});}

What wrong my code, please help to faster it process ?

Thank you for your help.

Upvotes: 0

Views: 1339

Answers (1)

hacker1024
hacker1024

Reputation: 3668

As others have said, package:image is written in pure Dart and will never be as fast as native solutions that can be multithreaded and hardware accelerated.

While using another isolate will stop the image tasks blocking the UI, if you need to do this as fast as possible, I suggest you use something like the ImageMagick library, or if you only need Android and iOS support, package:flutter_image_compress.

Upvotes: 1

Related Questions