Kamil Harasimowicz Kamil Harasimowicz - 3 years ago 164
Dart Question

Flutter & Firebase: Compression before upload image

I want to send photo selected by user in my app to Firebase Storage. I have a simple class with property

which is set like this:

File _imageFile;

_getImage() async {
var fileName = await ImagePicker.pickImage();
setState(() {
_imageFile = fileName;

after that I send photo like with this code:

final String rand1 = "${new Random().nextInt(10000)}";
final String rand2 = "${new Random().nextInt(10000)}";
final String rand3 = "${new Random().nextInt(10000)}";
final StorageReference ref = FirebaseStorage.instance.ref().child('${rand1}_${rand2}_${rand3}.jpg');
final StorageUploadTask uploadTask = ref.put(_imageFile);
final Uri downloadUrl = (await uploadTask.future).downloadUrl;

The problem is that the photos are often very large. Is there any method in Flutter/Dart to compress and resize photo before upload? I am ok with loss of quality.

Answer Source

The image_picker plugin is currently very simple. It would be straightforward to add an option for specifying the desired size/quality of the picked image. If you do this, please send us a pull request!

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download