随着flutter相机0.2.8版本中图像流的引入,我尝试将其集成到我的项目中,以便与AWS一起使用。
Amazon要求图像格式为:
- 图像字节的Blob,最大为5 MB。
- 类型:Base64编码的二进制数据对象
- 长度限制:最小长度为1。最大长度为5242880。
以前我使用Camera软件包来拍照,加载图片,然后按照亚马逊的要求进行转换,但使用ImageStream更适合我的需求。我以前的方法是:
// Take the picutre
await _cameraController.takePicture(path);
// Load it from my filesystem
File imagefile = new File(path);
// Convert to amazon requirements
List<int> imageBytes = imagefile.readAsBytesSync();
String base64Image = base64Encode(imageBytes);
然而,使用图像流,我找不到任何简单的方法来将CameraImage
转换成amazon要求的格式,我对图像没有太多经验,所以我很困惑。
我试图操纵firebase ml & camera stream demo中使用的代码
final int numBytes =
image.planes.fold(0, (count, plane) => count += plane.bytes.length);
final Uint8List allBytes = Uint8List(numBytes);
int nextIndex = 0;
for (int i = 0; i < image.planes.length; i++) {
allBytes.setRange(nextIndex, nextIndex + image.planes[i].bytes.length,
image.planes[i].bytes);
nextIndex += image.planes[i].bytes.length;
}
// Convert as done previously
String base64Image = base64Encode(allBytes);
然而,AWS的回应是InvalidImageFormatException
。如果有人知道如何正确编码图像,那就太棒了!谢谢
4条答案
按热度按时间5rgfhyps1#
将图像转换为png的解决方案:
图片来源:www.example.comhttps://github.com/flutter/flutter/issues/26348#issuecomment-462321428
2vuwiymt2#
将画廊图像转换为64进制Flutter
1hdlvixo3#
您可以直接转换图像文件到base64使用这个。
图像编码:
图像解码:
mzsu5hc04#
我正在使用此代码将YUV_420 888转换为PNG
然后创建PNG
作者:雨果
您还可以检查性能