web-dev-qa-db-fra.com

La taille de l'image extraite du plugin Flutter Image_Picker est beaucoup trop grande

Je souhaite utiliser la mise au point automatique sur l'appareil photo, qui est disponible sur le plugin image_picker. Cependant, lorsque j'appelle:

var bytes = new File(imagePath);
var enc = await bytes.readAsBytes();
print(enc.length);

J'ai eu: 5121126

ce qui prend au moins 10 secondes lorsque je veux encoder en json pour envoyer à un serveur API:

var body = json.encode({
      'image' : enc
})

En revanche, avec le plugin de la caméra, mon tableau d'octets n'est que de 420685, ce qui est 10 fois plus petit, mais il n'a pas la fonction de mise au point automatique.

Puis-je obtenir des conseils sur la façon de réduire la taille du tableau d'octets de image_picker? Je vous remercie.

10
Dai Dao

Le plugin camera a 3 résolutions par défaut, et vous sélectionnez probablement ou par défaut une résolution plus basse (que la pleine résolution du matériel).

Le image_picker le plugin n'a pas ces préréglages, mais a quelques arguments optionnels sur la méthode pickImage (maxWidth et maxHeight). Essayez de régler l'une de ces résolutions ou les deux sur des résolutions de type VGA (640, 480, voire 800, 600) pour voir si cela réduit la taille de l'image capturée.

Il existe également un package appelé image qui vous permettrait de post-traiter l'image. L'échantillon sur la page principale effectue un redimensionnement, en conservant les proportions.

11
Richard Heap

L'ajout de petites valeurs pour les paramètres maxHeight et maxWidth dans le plugin ImagePicker compresse la taille. Voici un exemple:

var fileFromCamera = await ImagePicker.pickImage(source: ImageSource.camera, maxHeight: 480, maxWidth: 640);

7
Idee