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.
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.
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);