Как преобразовать изображение в base64 и base64 в изображение? То, как я это делаю, не работает - PullRequest
0 голосов
/ 17 января 2019

Это пример кода.

var image = await ImagePicker.pickImage(source: ImageSource.camera);
var stringBytes = base64.encode(image.readAsBytesSync());
var bytes = base64.decode(stringBytes);
var newImage = new File.fromRawPath(bytes);
I/flutter (14608): The following FileSystemException was thrown resolving an image codec:
I/flutter (14608): Cannot open file, path = '����*�Exif
I/flutter (14608): 
I/flutter (14608): 
I/flutter (14608): Business
I/flutter (14608): 11:42:34
I/flutter (14608): �
I/flutter (14608):  
I/flutter (14608): ��
I/flutter (14608): ��
I/flutter (14608): %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz���������������������������������������������������������������������������
I/flutter (14608): ��
I/flutter (14608): $4�%�&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz��������������������������������������������������������������������������
I/flutter (14608): ��ت���U-%�����^
I/flutter (14608): }�m���
I/flutter (14608): u���V�N6R���
I/flutter (14608): j_8}W,1�ڹ�?ܻw^��� ��6��ꗚm���E[ϓ�������>���X�W��y������=�[!��2!ډ�'8�Mk^ܾ��eS�

и список неизвестных персонажей продолжается.

Что я делаю не так?

Я хочу преобразовать его в base64, потому что я собираюсь добавить его в базу данных.

1 Ответ

0 голосов
/ 17 января 2019

Нет, вы передаете содержимое изображения, чтобы создать новый файл с содержимым в виде необработанного пути, это не может работать.

new File.fromRawPath делает, в соответствии с документами :

Создает объект File из необработанного пути, то есть последовательности байтов, как представлен ОС.

То, что вы хотите сделать, это создать файл и сохранить содержимое в этом файле, это можно сделать так ( Источник ):

var imageFile = File('myimage.jpg');
var sink = imageFile.openWrite();
sink.write(bytes);
await sink.flush();
await sink.close();
...