将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)
。然后还有其他的装饰,我不知道该如何传递给他们。例如planeData
和rawFormat
。
以下是这些文档:
[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 编码的图像并使用 ExpressJS 作为图像发送