从 Flutter Image_Picker 插件获取的图像尺寸太大了
Image size taken from Flutter Image_Picker plugin is way too big
我想在相机上使用自动对焦功能,可在 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 获得一些关于如何减小字节数组大小的建议吗?谢谢。
camera
插件有 3 个默认分辨率,您可能选择或默认使用较低的分辨率(低于硬件的全分辨率)。
image_picker
插件没有这些预设,但在 pickImage
方法上有一些可选参数(maxWidth
和 maxHeight
)。尝试将其中一个或两个设置为 VGA 类型的分辨率(640、480,甚至 800、600),看看这是否会减小捕获图像的大小。
还有一个名为 image
的包,它允许您 post 处理图像。主页上的示例调整大小,保持宽高比。
在 ImagePicker
插件中为 maxHeight
和 maxWidth
参数添加较小的值可以压缩大小。这是一个例子:
var fileFromCamera = await ImagePicker.pickImage(source: ImageSource.camera, maxHeight: 480, maxWidth: 640);
现在在 image_picker v. ^0.6.7+4 你也有参数 'imageQuality' 并且在文档中你可以看到.. "The imageQuality
参数修改图像的质量,范围从 0-100,其中 100 是 original/max 质量。"
所以,最终代码可能是这样的:
ImagePicker().getImage(
source:ImageSource.camera,
maxHeight: 480,
maxWidth: 640,
imageQuality: 50
)
我想在相机上使用自动对焦功能,可在 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 获得一些关于如何减小字节数组大小的建议吗?谢谢。
camera
插件有 3 个默认分辨率,您可能选择或默认使用较低的分辨率(低于硬件的全分辨率)。
image_picker
插件没有这些预设,但在 pickImage
方法上有一些可选参数(maxWidth
和 maxHeight
)。尝试将其中一个或两个设置为 VGA 类型的分辨率(640、480,甚至 800、600),看看这是否会减小捕获图像的大小。
还有一个名为 image
的包,它允许您 post 处理图像。主页上的示例调整大小,保持宽高比。
在 ImagePicker
插件中为 maxHeight
和 maxWidth
参数添加较小的值可以压缩大小。这是一个例子:
var fileFromCamera = await ImagePicker.pickImage(source: ImageSource.camera, maxHeight: 480, maxWidth: 640);
现在在 image_picker v. ^0.6.7+4 你也有参数 'imageQuality' 并且在文档中你可以看到.. "The imageQuality
参数修改图像的质量,范围从 0-100,其中 100 是 original/max 质量。"
所以,最终代码可能是这样的:
ImagePicker().getImage(
source:ImageSource.camera,
maxHeight: 480,
maxWidth: 640,
imageQuality: 50
)