将base64字符串编码的图像/字节图像作为图像在Flutter中用于Firebase ML Vision中进行处理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将base64字符串编码的图像/字节图像作为图像在Flutter中用于Firebase ML Vision中进行处理相关的知识,希望对你有一定的参考价值。

我想从base64编码的图像中对文本进行OCR。我知道图片有效,因为我可以使用

显示它

Image.memory(base64Decode(captchaEncodedImgFetched))

现在,问题是我需要将此图像传递给Firebase ML Vision进行处理。

[库firebase_ml_vision具有使用文件中图像的示例

final File imageFile = getImageFile();
final FirebaseVisionImage visionImage = FirebaseVisionImage.fromFile(imageFile);`

但是我有一个base64编码的图像。

我尝试了以下内容

final FirebaseVisionImage visionImage = FirebaseVisionImage.fromBytes(
base64Decode(captchaEncodedImgFetched));

但是似乎需要FirebaseVisionImageMetadata()作为参数,但是我对字节图像一无所知。

此类需要更多我不理解的参数。例如,它需要一个size : Size(width, height)参数。图像是否应该已经具有尺寸?为什么我需要再次指定它?

现在我将其设置为Size(200, 50)。然后还有其他的装饰,我不知道该如何传递给他们。例如planeDatarawFormat

以下是这些文档:

https://pub.dev/documentation/firebase_ml_vision/latest/firebase_ml_vision/FirebaseVisionImageMetadata-class.html

https://pub.dev/documentation/firebase_ml_vision/latest/firebase_ml_vision/FirebaseVisionImagePlaneMetadata-class.html

https://pub.dev/documentation/firebase_ml_vision/latest/

答案

[FirebaseVisionImage.fromBytes需要FirebaseVisionImageMetadata,而实习生需要FirebaseVisionImagePlaneMetadata。以下示例:

// Below example uses metadata values based on an RGBA-encoded 1080x1080 image
final planeMetadata = FirebaseVisionImagePlaneMetadata(
    width: 1080,
    height: 1080,
    bytesPerRow: 1080 * 4,
);

final imageMetadata = FirebaseVisionImageMetadata(
    size: Size(1080, 1080),
    planeData: planeMetadata,
    rawFormat: 'RGBA', 
);

final visionImage = FirebaseVisionImage.fromBytes(decoded, metadata);

尽管以性能为代价,更简单的解决方法是将字节写入磁盘并从磁盘读取映像,如:

File imgFile = File('myimage.png');
imageFile.writeAsBytesSync(decoded.ToList());

final visionImage = FirebaseVisionImage.fromFile(imageFile);

以上是关于将base64字符串编码的图像/字节图像作为图像在Flutter中用于Firebase ML Vision中进行处理的主要内容,如果未能解决你的问题,请参考以下文章

将 Base64 编码的图像写入文件

在python中将base64编码的图像解码为原始图像

获取 Base64 编码的图像并使用 ExpressJS 作为图像发送

SSE图像算法优化系列三十一:Base64编码和解码算法的指令集优化(C#自带函数的3到4倍速度)。

从 mime 字节验证 base64 编码图像

AngularJS:用于将动态 base64 编码图像作为背景图像的 ng-class