【问题标题】:Image size taken from Flutter Image_Picker plugin is way too big从 Flutter Image_Picker 插件获取的图像尺寸太大
【发布时间】:2018-10-31 09:31:43
【问题描述】:

我想在相机上使用自动对焦,它可以在 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 中减小字节数组大小的建议吗?谢谢。

【问题讨论】:

  • ImagePicker 插件中添加imageQuality 参数可以压缩大小。 eg: File image = await ImagePicker.pickImage(source: source, imageQuality: 20);

标签: image plugins camera uiimagepickercontroller flutter


【解决方案1】:

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

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

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

【讨论】:

  • 感谢您的回答。我已经检查了image 包,解码图像字节和调整大小也很慢。
  • pickimage 可选参数——适用于较低分辨率。图片
【解决方案2】:

ImagePicker 插件中为maxHeightmaxWidth 参数添加小的值会压缩大小。这是一个例子:

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

【讨论】:

    【解决方案3】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-14
      • 1970-01-01
      • 1970-01-01
      • 2013-03-04
      • 1970-01-01
      • 2011-08-02
      • 1970-01-01
      相关资源
      最近更新 更多