首页 > 其他分享 >加载本地图片的方法

加载本地图片的方法

时间:2024-07-28 22:24:09浏览次数:13  
标签:本地 处理 加载 file 属性 图片

文章目录


我们在上一章回中介绍了"如何加载网络图片"相关的内容,本章回中将介绍如何加载本地图片.闲话休提,让我们一起Talk Flutter吧。

在这里插入图片描述

1. 概念介绍

我们在上一章回中介绍的内容与图片有关,本章回中仍然介绍图片相关的知识:加载本地图片。我们在这里说的本地图片表示图片存储于手机自带的文件系统中,我们可以
通过AndroidStudio的DeviceFileManger中看到图片。

2. 实现方法

2.1 主要步骤

加载本地图片的主要是步骤是使用file()方法,它是image类的静态方法,可以直接拿来使用。该方法提供了一些常用的属性,详细如下:

  • color属性:主要用来修改图片的颜色;
  • frameBuilder属性: 主要用来控制图片从本地加载过程中显示的内容;
  • errorBuilder属性: 主要用来控制图片从本地加载失败后显示的内容;
    该方法还有一个没有命名的属性:file,该属性主要用来存放图片的绝对地址,这个是必不可少的内容。

2.2 注意事项

在加载本地图片时需要处理加载过程和加载错误,加载错误时通过errorBuilder属性控制,该属性是方法类型,它会把错误的信息通过方法的参数传递出来,我们可以
依据错误信息做相关的处理。加载过程中通过frameBuilder属性控制,该属性也是方法类型,它会把加载的帧数和加载完后的图片通过参数传递出来,我们可以显示
图片加载的帧数。稍后我们将通完示例代码来演示。

3. 示例代码

///对应目录:storage/emulated/0/Android/data/package_name/files
Future<Directory?>? _externalDocumentsDirectory;
String filePath = "";
  _externalDocumentsDirectory = getExternalStorageDirectory();

  _externalDocumentsDirectory?.then((value) {
    debugPrint("current path: ${value?.path} ");
    setState(() {
      filePath = "${value?.path}/switch.png";
    });
  });

Image.file(
  File(filePath),
  width: 200,
  height: 200,
  alignment: Alignment.center,
  fit: BoxFit.fill,
  ///处理文件导入正确相关的内容
  frameBuilder:(context,child,frame,wasSynchronouslyLoaded) {
    if(wasSynchronouslyLoaded) {
      return child;
    }else {
      // return Text("frame:${frame.toString()}");
      return child;
    }
  },
  ///处理文件导入错误相关的内容
  errorBuilder: (context,error,trace) {
    debugPrint("load file error: ${error.toString()}");
    return Text(error.toString());
  },
),

上面的示例代码中演示了如何使用Image的file()方法加载本地图片,同时处理了图片加载过程和加载错误的业务逻辑,不过我们处理的的比较简单,只是显示一个
加载中或者加载错误的文字信息。大家可以依据自身业务逻辑进行相关的处理。此外,代码中处理图片加载中的业务时可以判断帧数,通常加载完第一帧时就会返回图片信
息,不过这个帧数与图片自身有关,有些图片只有一帧,有些图片包含多帧。因此这个frameBuilder属性与具体的图片有关,可以不去处理它。
代码中使用了getExternalStorageDirectory()方法,该方法是path_provider包提供的接口,它可以获取到当前存储的绝对位置,具体的位置信息可以参考我们
在代码中的文字注释。我们提前在该位置所在的目录中存放了一个名叫switch.png的图片,运行程序程序可以看到该图片,大家可以替换成自己文件系统中的图片
文件,或者不放图片文件,此时会显示错误信息。

4. 内容总结

最后,我们对本章回的内容做一个全面的总结:

  • 加载本地图片使用Image组件的file()方法;
  • 加载图片时需要处理图片加载过程和加载错误的业务逻辑;
  • 加载过程的属性与图片有关,可以依据实际业务来处理,或者不处理;
    看官们,与"如何加载本地图片"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!

标签:本地,处理,加载,file,属性,图片
From: https://blog.csdn.net/talk_8/article/details/140757409

相关文章

  • 本地运行Meta最新大模型:Llama3.1
    手把手教你本地运行Meta最新大模型:Llama3.1,可是它说自己是ChatGPT? 就在昨晚,Meta发布了可以与OpenAI掰手腕的最新开源大模型:Llama3.1。该模型共有三个版本:8B70B405B对于这次发布,Meta已经在超过150个涵盖广泛语言范围的基准数据集上评估了性能。此外,Meta还进行了广泛......
  • vue2 - 详细实现“视频切片/分段加载“播放大视频,解决视频过大加载播放缓慢问题,vue处
    效果图在vue2、nuxt2项目开发中,详解vue视频分片加载,所谓“边播放边加载”,利用axios分段请求后端服务器每次只拿一小段视频慢慢缓存播放,让非常大的视频(例如电影,很长的视频播放太慢)流畅播放,vue2实现将video视频进行切片网络请求加载提升视频加载速度,详细解决视频分段下载......
  • JavaScript图片轮播
    代码在文章最后面(含图片URL)实现功能按向左按钮图片显示上一张按向右按钮图片显示下一张每隔2000毫秒显示下一张图底部三个圆点显示当前的图片的编号实现流程初始化图片数组创建一个包含图片URL的数组,轮播时会通过这个数组来切换图片。创建当前索引变量 这个变量用来追踪......
  • 鸣潮游戏错误126:加载x3daudio1_7.dll失败的全面解析与修复指南
    在畅玩鸣潮游戏时,不少玩家可能会遭遇错误代码「126」,提示“加载x3daudio1_7.dll失败,该文件缺失或损坏”。这个问题看似棘手,实则有迹可循,通过本文,我们将深入探讨其成因,并提供详细的解决步骤,帮助你重拾游戏乐趣。x3daudio1_7.dll是什么?x3daudio1_7.dll是一个与DirectX音频组件......
  • 构建大规模账号池与本地部署:GitHub爬虫项目详解
    账号池搭建必要性常见登录方式:基于Session+Cookie的登录基于JWT的登录:登录生成JWT字符串账号池存储cookie或者JWT字符串方便后续发请求爬取数据本地部署conda建立一个虚拟环境condacreate-nnew_envpython=3.x#替换x为你需要的Python版本激活新建环......
  • 记一次上传图片马无法链接菜刀(蚁剑)的方法解决
    首先原因是因为我在网站后台发现该网站有数据库备份的功能,如下所示于是我们利用上传一个图片马然后将上传链接复制到数据库路径,然后在数据库名称将我们的图片马修改成mm.asp或者xx.asp都行,然后访问链接执行我们的图片马之后成功执行复制地址链接发现报错,这里提一点,你的路......
  • 小白必看的cmd简单代码!(图片看不到的可复制 粘贴到Typroa进行观看)
    打卡cmd的方法直接window加r输入cmd在下方菜单找到window标志,打开输入命令提示符更高级的cmd权限使用:右键命令提示符,点击"以管理员身份运行"一些简单的dos命令(均需英文输入法)(回车步骤省略)1.盘符切换:打开cmd后输入想要切换的磁盘再加上:即可![](C:\Users\直実\Pictures......
  • Vite本地构建:手写核心原理
    前言接上篇文章,我们了解到vite的本地构建原理主要是:启动一个connect服务器拦截由浏览器请求ESM的请求。通过请求的路径找到目录下对应的文件做一下编译最终以ESM的格式返回给浏览器。基于这个核心思想,我们可以尝试来动手实现一下。搭建静态服务器基于koa搭建一个项目:项......
  • java使用google开源工具Thumbnailator实现图片压缩
    Thumbnailator,一款google使用的开源的图片压缩工具类。github地址:https://github.com/coobird/thumbnailator优点:1、压缩程度可控制,想压缩成多小就多小。2、压缩之后图片尽可能的不失真。3、压缩速度要快。4、代码简单,依赖较少。5、可以实现对图片到编辑,如如旋转,裁切,加......
  • 取消pickle错误:magic_number = pickle_module.load(f, **pickle_load_args) _pickle.U
    当我尝试加载.pt文件时,我看到以下错误,str1='Dataset/ALL_feats_cgqa.pt'm=torch.load(str1)错误如下,File"/home/Storage1/pythonCodeArea/train.py",line21,inload_embeddingsm=torch.load(str1)File"/home/.local/lib/python......