Передача изображения / байта в кодировке строки base64 в качестве изображения для обработки в Firebase ML Vision во Flutter
Я хочу OCR текста из изображения в кодировке base64. Я знаю, что изображение работает, потому что могу отобразить его, используя
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
.
Вот документы для них:
1 ответ
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);