图片地址: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
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); } }
- 将下载获取的图片的字节信息写入这个新文件
-
-
-