I'm trying to compress a picture with Flutter and know the original and compressed sizes. But I am getting an error. Kindly look at the compressImage() function:
Future<void> _compressImage() async {
if (_image == null) {
return;
}
final originalSize = _originalSize ?? await _image!.length();
final compressedImage = await FlutterImageCompress.compressAndGetFile(
_image!.path,
_image!.path,
quality: 60,
);
final compressedSize = await compressedImage!.length();
setState(() {
_image = compressedImage;
_compressedSize = compressedSize;
});
print('Original Size =====> $originalSize');
print('Compressed Size =====> $compressedSize');
}
These are the variables and pickImageFromCamera() Function:
XFile? _image;
int? _originalSize;
int? _compressedSize;
late XFile pickedImage;
Future<void> _pickImageCamera() async {
final picker = ImagePicker();
final pickedImage = await picker.pickImage(source: ImageSource.camera);
if (pickedImage != null) {
final XFile image = XFile(pickedImage.path);
final originalSize = await image.length();
setState(() {
_image = image;
_originalSize = originalSize;
_compressedSize = null;
});
}
}
When I execute compressImage() function; I am getting this error:
E/flutter (21267): [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: Instance of 'CompressError'
E/flutter (21267): #0 FlutterImageCompressCommon.compressAndGetFile (package:flutter_image_compress_common/flutter_image_compress_common.dart:173:7)
E/flutter (21267): #1 FlutterImageCompress.compressAndGetFile (package:flutter_image_compress/flutter_image_compress.dart:105:22)
E/flutter (21267): #2 _ImageCompressorState._compressImage (package:ezy_img_compressor/image_compressor.dart:52:56)
E/flutter (21267): #3 _InkResponseState.handleTap (package:flutter/src/material/ink_well.dart:1154:21)
E/flutter (21267): #4 GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:275:24)
E/flutter (21267): #5 TapGestureRecognizer.handleTapUp (package:flutter/src/gestures/tap.dart:654:11)
E/flutter (21267): #6 BaseTapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:311:5)
E/flutter (21267): #7 BaseTapGestureRecognizer.acceptGesture (package:flutter/src/gestures/tap.dart:281:7)
E/flutter (21267): #8 GestureArenaManager.sweep (package:flutter/src/gestures/arena.dart:167:27)
E/flutter (21267): #9 GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:469:20)
E/flutter (21267): #10 GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:445:22)
E/flutter (21267): #11 RendererBinding.dispatchEvent (package:flutter/src/rendering/binding.dart:331:11)
E/flutter (21267): #12 GestureBinding._handlePointerEventImmediately (package:flutter/src/gestures/binding.dart:400:7)
E/flutter (21267): #13 GestureBinding.handlePointerEvent (package:flutter/src/gestures/binding.dart:363:5)
E/flutter (21267): #14 GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:320:7)
E/flutter (21267): #15 GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:293:9)
E/flutter (21267): #16 _invoke1 (dart:ui/hooks.dart:158:13)
E/flutter (21267): #17 PlatformDispatcher._dispatchPointerDataPacket (dart:ui/platform_dispatcher.dart:382:7)
E/flutter (21267): #18 _dispatchPointerDataPacket (dart:ui/hooks.dart:91:31)