Image size taken from Flutter Image_Picker plugin is way too big

随声附和 提交于 2019-11-28 00:08:40

问题


I want to use auto-focus on the camera, which is available on the image_picker plugin. However, when I call:

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

I got: 5121126

which takes at least 10 seconds when I want to encode into json to send to an API server:

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

In contrast, with the camera plugin, my byte array is only 420685, which is 10 times smaller, but it doesn't have the auto-focus feature.

Can I get some advice on how to reduce the size of the byte array from image_picker? Thank you.


回答1:


The camera plugin has 3 default resolutions, and you are probably selecting or defaulting to a lower resolution (than the hardware's full resolution).

The image_picker plugin doesn't have these presets, but does have some optional arguments on the pickImage method (maxWidth and maxHeight). Experiment setting one or both of these to VGA type resolutions (640, 480, even 800, 600) to see if this reduces the size of the captured image.

There's also a package called image which would allow you to post-process the image. The sample on the main page does a resize, maintaining aspect ratio.




回答2:


Adding small values for the maxHeight and maxWidth parameter in the ImagePicker plugin compresses the size. Here is an example:

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



来源:https://stackoverflow.com/questions/50453705/image-size-taken-from-flutter-image-picker-plugin-is-way-too-big

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!