Как преобразовать изображение из пути в Base64 во флаттере? - PullRequest
0 голосов
/ 06 февраля 2020

Я пытаюсь захватить изображение, а затем отправить путь изображения в функцию, которая возвращает изображение в Base64. Для захвата изображения я использую пример на веб-сайте Flutter.

Future _takePhoto(BuildContext context) async {
  try {
    await _initializeControllerFuture;

    final path = join(
      (await getTemporaryDirectory()).path,
      '${DateTime.now()}.png',
    );

    await _cameraController.takePicture(path);

    setState(() {
      _imagePath = path;
    });

  } catch (e) {
    print(e);
  }
}

Это работает хорошо. Я вижу захваченное изображение в виджете Image.file(File(_imagePath))

Проблема начинается, когда я пытаюсь преобразовать изображение в Base64.

File file = File(_imagePath);
final _imageFile = ImageProcess.decodeImage(
  file.readAsBytesSync(),
);

String base64Image = base64Encode(ImageProcess.encodePng(_imageFile));
print(base64Image);

Я копирую и вставляю напечатанное сообщение в онлайн-инструмент, который генерирует изображение из Base64, и оно либо черное, либо имеет крошечный верхний слой изображения, а остальное черное.

Ответы [ 2 ]

1 голос
/ 06 февраля 2020

print функция не печатать все.
вы можете увидеть полный результат в режиме отладки
и скопировать полный результат в режиме отладки в онлайн-инструмент

enter image description here

enter image description here

0 голосов
/ 06 февраля 2020

Это должно напечатать ваше изображение в виде строки base64

import 'dart:typed_data';
import 'dart:async';
import 'dart:io';
import 'dart:convert';
File file = File(_imagePath);
Uint8List bytes = file.readAsBytesSync();
String base64Image = base64Encode(bytes);
print(base64Image);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...