当前位置: 首页 > news >正文

wpf BitmapImage缓存问题

情景描述:通过BitmapImage加载图片显示到Image控件上,然后删除图片后,重新生成同路径的全新图片,再加载显示到Image控件上;

限制:图片必须是同名,非同名可以无视此问题;需要频繁加载图片,所以缓存机制不可免;

问题描述:当我删除图片A后,重新生成同路径同名的图片B并通过BitmapImage加载到Image上时,显示出来的还是图片A;原因就出在这个缓存,因为图片B跟A同名,所以加载的时候直接读取了缓存中的图片A;

解决方法:1、图片不同名就是了;

                  2、不缓存就是了,将bitmap.CreateOptions 设置为 BitmapCreateOptions.IgnoreImageCache

                  3、由于限制条件,以上方法都不能用,所以借助uri的查询参数机制,使用文件的最后修改时间戳作为查询参数:

                               当文件未替换时,时间戳不变 → Uri 不变 → 复用缓存(保持缓存机制)。

                        当文件替换后,时间戳变化 → Uri 变化 → 视为新资源,重新加载并缓存新图。

 

 

方法2:

 

var bitmap = new BitmapImage();
bitmap.BeginInit();
bitmap.CacheOption = BitmapCacheOption.OnLoad; // 在加载后关闭流,跟源文件断开连接
bitmap.UriSource = new Uri(path, UriKind.RelativeOrAbsolute);
bitmap.CreateOptions = BitmapCreateOptions.IgnoreImageCache; // 忽视图片缓存,每次加载都从源文件获取
bitmap.EndInit();

 

方法3:

// 获取绝对路径(避免相对路径解析歧义)
string absolutePath = Path.GetFullPath(path);

//  获取文件时间戳(不变)
var lastWriteTime = File.GetLastWriteTimeUtc(absolutePath);
long timeStamp = lastWriteTime.Ticks;

// 构建标准 file:// Uri
var fileUri = new Uri(absolutePath, UriKind.Absolute); // 基础 file:// 协议 Uri
// 拼接片段标识符(?t=xxx)
string uriWithTimeStamp = $"{fileUri.ToString()}?t={timeStamp}";
var imageUri = new Uri(uriWithTimeStamp, UriKind.Absolute);
// 保持原缓存逻辑创建 BitmapImage
var bitmap = new BitmapImage();
bitmap.BeginInit();
bitmap.CacheOption = BitmapCacheOption.OnLoad; 
bitmap.UriSource = imageUri;
bitmap.EndInit();
bitmap.Freeze();

 

http://www.gsyq.cn/news/61199.html

相关文章:

  • PySpark - expr() and filter()
  • 邮件群发系统
  • JSAPIThree 事件系统学习笔记:处理交互的基础
  • 2025广州留学机构有哪些学校招生
  • 现今安徽香菇厂家推荐排行
  • 2025年Q4内容审核公司推荐,全链路防护+弹性人力池测评榜
  • 深扒Pickle反序列化
  • 2025年靠谱的西安外贸网站建设行业内最具实力的三家公司
  • 2025 年 11 月铣床厂家权威推荐榜:立式铣床/摇臂铣床/炮塔铣床/数控铣床/升降台铣床/精密铣床/多功能铣床/万能铣床/手摇铣床,高效精准加工利器精选
  • 运维监控厂商格局重塑:2025可观测技术如何重构企业IT运维效能?
  • Rust 创建环境配置:IDE 选择与深度优化实践
  • 2025 年 11 月镀膜材料厂家权威推荐榜:真空镀膜材料,光学镀膜材料,PVD镀膜材料,磁控溅射镀膜材料,专业品质与创新技术深度解析
  • MATLAB中主成分分析(PCA)与相关性分析的实现
  • 2025年11月休闲食品品牌推荐排行:满足多元场景的理性选择
  • OOP-实验四
  • 2025年LED灯珠优质厂家权威推荐榜单:LED灯‌/led灯‌/led景观灯‌源头厂家精选
  • 分布式、域控及SOA架构车身功能测试方案
  • 2025年广东枫叶卡企业外派保卡豁免条件方案权威榜单:广东枫叶卡企业外派保卡审批/广东枫叶卡企业外派保卡进度查询渠道/广东枫叶卡企业外派保卡失败原因服务机构精选
  • 2025 年 11 月靶材厂家权威推荐榜:溅射/磁控溅射/镀膜/旋转靶材,ITO/半导体/光学镀膜/陶瓷/金属/钛/铝/铜/钨/钼/钽/硅/合金/稀土靶材精选品牌,技术实力与镀膜效果深度解析
  • Java新手建站避坑:3天遭爬取后,10分钟部署免费WAF护住学习笔记
  • 2025天津留学机构推荐排名前十
  • 2025厦门比较好的留学机构有哪些
  • 2025 年 11 月铝单板厂家权威推荐榜:氟碳铝单板、仿木纹铝单板、仿石材铝单板,精选耐用美观的定制化外墙装饰解决方案
  • 2025 年 11 月管道更换服务实力厂家推荐榜:覆盖老旧破损/防腐耐高温/无损快速更换,自来水/燃气/暖气/工业/中央空调/地下室内外管道专业施工与高效解决方案
  • 2025年最受欢迎的一对一家教老师TOP5,一对一家教/上门家教一对一家教机构老师推荐排行榜单
  • [题解]P12444 [COTS 2025] 发好奖 / Hijerarhija
  • 2025年M12焊板式插座厂家权威推荐榜单:M12电源连接器方形法兰插座‌/M12连接器K编码插头‌/M12连接器T编码插座‌源头厂家精选
  • 抓住寒假提分窗!推荐硬实力初中数学补习老师,弯道超车正当时
  • 2025年奥福兰权威深度解析:八大核心技术如何重塑健康睡眠新标准
  • 2025年奥福兰权威解析:八大核心技术如何重塑健康睡眠新标准