Ich möchte ein Foto, das vom Benutzer in meiner App ausgewählt wurde, an Firebase Storage senden. Ich habe eine einfache Klasse mit Eigenschaft _imageFile
der wie folgt festgelegt ist:Flutter & Firebase: Komprimierung vor dem Hochladen Image
File _imageFile;
_getImage() async {
var fileName = await ImagePicker.pickImage();
setState(() {
_imageFile = fileName;
});
}
nach, dass ich Foto wie mit diesem Code senden:
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;
print(downloadUrl);
Das Problem ist, dass die Fotos sind oft sehr groß. Gibt es eine Methode in Flutter/Dart, um das Foto vor dem Hochladen zu komprimieren und seine Größe zu ändern? Ich bin in Ordnung mit Qualitätsverlust.
Vielleicht möchten Sie https://pub.dartlang.org/packages/image ausprobieren, ich habe das nicht versucht, aber wenn Sie die Dokumentation lesen, werden Sie feststellen, dass Sie Bilder in verschiedene Formate codieren und andere angeben können Komprimierungsstufen. – aziza