2017-10-01 10 views
1

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.

+1

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

Antwort

1

Das image_picker Plugin ist derzeit sehr einfach. Es wäre einfach, eine Option zum Spezifizieren der gewünschten Größe/Qualität des ausgewählten Bildes hinzuzufügen. Wenn Sie dies tun, senden Sie uns bitte eine Pull-Anfrage!

Verwandte Themen