Flutter: Загрузить изображение в Firebase Storage - PullRequest
0 голосов
/ 14 мая 2018

У меня есть изображение, которое я получил с холста PictureRecorder. Теперь я хочу загрузить его в хранилище Firebase. Моя проблема заключается в преобразовании его в PNG-файл для загрузки. Я не знаю много о преобразовании изображений, поэтому не уверен, как манипулировать им таким образом, чтобы загрузить в виде файла PNG.

final picture = recorder.endRecording();
final img = picture.toImage(640, 360);
final pngBytes = await img.toByteData();

final Directory systemTempDir = Directory.systemTemp;
final File file = await new File('${systemTempDir.path}/foo.png').create();
file.write?????(pngBytes);     <-- Not sure how to write the file here
final StorageReference ref =
      storage.ref().child('images').child('image.png');
final StorageUploadTask uploadTask =
      ref.putFile(file);

Ответы [ 2 ]

0 голосов
/ 15 мая 2018

Понял!

final picture = recorder.endRecording();
final img = picture.toImage(640, 360);
final pngBytes = await img.toByteData(format: ImageByteFormat.png);
Uint8List finalImage = Uint8List.view(pngBytes.buffer);

final Directory systemTempDir = Directory.systemTemp;
final File file = await new File('${systemTempDir.path}/foo.png').create();
file.writeAsBytes(finalImage);
final StorageReference ref = storage.ref().child('images').child('image.png');
final StorageUploadTask uploadTask = ref.putFile(file);
0 голосов
/ 14 мая 2018

Вы можете использовать imagemagik для преобразования файлов. Эта ссылка дает вам достаточное количество подробностей о том, как это сделать, поэтому я не буду здесь углубляться. В качестве альтернативы вы могли бы написать облачную функцию , которая выполняет преобразования на сервере. Зависит от вашего варианта использования.

НТН.

...