从图像小部件创建图像文件



我正在开发一个应用程序,我的应用程序的用户必须将图像上传到Firebase Storage,为此,图像必须为File格式。

部分图像来自网络,也就是说,它们是通过Image.network()方法获得的。另一部分来自手机图库,通过ImagePicker软件包获得。

即使来自不同的来源,所有图像都被分组在List<Image>中。现在,我需要将此图像列表上传到存储,但为此我需要将它们转换为文件,我不知道如何做到这一点,有人能帮忙吗?

首先你应该将图像从网络url保存到文件中,最好像这个

import 'dart:io';
import 'package:http/http.dart' as http;
import 'package:path/path.dart';
import 'package:path_provider/path_provider.dart';

Future<File> _fileFromImageUrl() async {
final response = await http.get('https://example.com/abc.jpg');

final documentDirectory = await getApplicationDocumentsDirectory();

final file = File(join(documentDirectory.path, 'imagetest.png'));

file.writeAsBytesSync(response.bodyBytes);

return file;
}

之后,将其添加到您的图像列表中,并从图像选择器中获取图像。https://pub.dev/packages/image_picker

import 'package:image_picker/image_picker.dart';
final ImagePicker _picker = ImagePicker();      
final XFile? image = await _picker.pickImage(source:ImageSource.gallery);

您可以按照以下方式下载图像并保存文件。


import 'dart:io';
import 'package:http/http.dart' as http;
import 'package:path/path.dart';
import 'package:path_provider/path_provider.dart';
Future<File> _fileFromImageUrl() async {
final response = await http.get('https://example.com/xyz.jpg');
final documentDirectory = await getApplicationDocumentsDirectory();
final file = File(join(documentDirectory.path, 'imagetest.png'));
file.writeAsBytesSync(response.bodyBytes);
return file;
}

最新更新