图片地址:https://img03.sogoucdn.com/v2/thumb/retype_exclude_gif/ext/auto/crop/xy/ai/w/1284/h/722?appid=200698&url=https://pic.baike.soso.com/ugc/baikepic2/24446/cut-20211222173333-829293243_jpg_1308_872_50708.jpg/0
因为图片是二进制数据的形式存储在计算机中的,所以保存图片到本地必须使用二进制数据。
下载图片
- 使用已经封装好的Dio.get方法,详情可见Flutter之Dio封装+实例(自己梳理)_YUFENGSHI.LJ的博客-CSDN博客
- 传入图片网址
- 将返回的数据类型设置为二进制类型
//下载图片
var result = await HttpManager.getInstance().get(
"https://img03.sogoucdn.com/v2/thumb/retype_exclude_gif/ext/auto/crop/xy/ai/w/1284/h/722?appid=200698&url=https://pic.baike.soso.com/ugc/baikepic2/24446/cut-20211222173333-829293243_jpg_1308_872_50708.jpg/0",
//将返回类型设置为二进制,此时的result是二进制数据,保存的是图片的字节数组
option: Options(responseType: ResponseType.bytes));
选择本地文件夹
此时需利用file_picker: ^5.3.3 包
-
添加依赖
-
选择文件目录
//选择文档目录
//selectedDirectory是选择的文件夹的地址 C:\Users\lanlian\Desktop\沈成林\休闲娱乐来一套\下载图片
String? selectedDirectory = await FilePicker.platform.getDirectoryPath();
if (selectedDirectory == null) {
print("请选择正确的文件地址");
return;
}
else{}
此时需要判断选择的文档地址是否为空,如果则退出选择,不为空则继续操作
保存图片
-
创建一个名为$name的新文件(要将图片保存到这里)
此时需要判断保存的图片是否已经存在,如果已经存在则退出
//创建一个名为download1.jpg的新文件
File image_file=File('${selectedDirectory}/download1.jpg');
if(image_file.existsSync()){
print("图片已存在");
return;
}
- 将下载获取的图片的字节信息写入这个新文件
//从网络上下载的图片的字节数组写入该文件中。
image_file.writeAsBytes(result);
完整代码
Future<void> saveImage() async {
print("保存图片到本地");
//下载图片
var result = await HttpManager.getInstance().get(
"https://img03.sogoucdn.com/v2/thumb/retype_exclude_gif/ext/auto/crop/xy/ai/w/1284/h/722?appid=200698&url=https://pic.baike.soso.com/ugc/baikepic2/24446/cut-20211222173333-829293243_jpg_1308_872_50708.jpg/0",
//将返回类型设置为二进制,此时的result是二进制数据,保存的是图片的字节数组
option: Options(responseType: ResponseType.bytes));
//选择文档目录
//selectedDirectory是选择的文件夹的地址 C:\Users\lanlian\Desktop\沈成林\休闲娱乐来一套\下载图片
String? selectedDirectory = await FilePicker.platform.getDirectoryPath();
if (selectedDirectory == null) {
print("请选择正确的文件地址");
return;
}
else{
print("selectedDirectory:${selectedDirectory}");
//创建一个名为download1.jpg的新文件
File image_file=File('${selectedDirectory}/download1.jpg');
if(image_file.existsSync()){
print("图片已存在");
return;
}
//从网络上下载的图片的字节数组写入该文件中。
image_file.writeAsBytes(result);
}
}