从Flutter Image_Picker插件中获取的图片大小太大

时间:2018-05-21 17:16:53

标签: image plugins camera uiimagepickercontroller flutter

我想在相机上使用自动对焦功能,该功能可在image_picker插件上使用。但是,当我打电话时:

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

我得到了:5121126

当我想编码为json以发送到API服务器时,这需要至少10秒:

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

相比之下,使用相机插件,我的字节数组仅为420685,小10倍,但它没有自动对焦功能。

我可以就如何从image_picker减小字节数组的大小获得一些建议吗?谢谢。

3 个答案:

答案 0 :(得分:5)

camera插件有3种默认分辨率,您可能选择或默认为较低的分辨率(比硬件的全分辨率)。

image_picker插件没有这些预设,但在pickImage方法(maxWidthmaxHeight)上有一些可选参数。尝试将其中一个或两个设置为VGA类型分辨率(640,480,甚至800,600),以查看是否会减小捕获图像的大小。

还有一个名为image的软件包可以让您对图像进行后期处理。主页面上的示例执行调整大小,保持纵横比。

答案 1 :(得分:3)

现在在 image_picker v. ^0.6.7+4 中,您还有参数“imageQuality”,在文档中您可以看到..“imageQuality 参数修改图像的质量,范围从 0-100,其中 100 是原始/最大质量。"

所以,最终的代码可能是这样的:

ImagePicker().getImage(
      source:ImageSource.camera,
      maxHeight: 480,
      maxWidth: 640,
      imageQuality: 50
)

答案 2 :(得分:2)

maxHeight插件中为maxWidthImagePicker参数添加较小的值会压缩大小。这是一个示例:

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