WPF的Image控件BitmapImage以及Uri的资源占用问题

Image 控件占用图片资源不释放的问题的解决方法:

XAML:

<Image Name="_imgDisplay" Stretch="Fill" />
<dxe:PopupImageEdit
                        Name="popupImageEdit" MouseDoubleClick="popupImageEdit_MouseDoubleClick"
                        VerticalAlignment="Center"
                        Width="300" IsReadOnly="true"
                        PopupMaxHeight="400"
                        PopupMaxWidth="400"
                        ShowMenu="{Binding Path=IsChecked, ElementName=chkShowMenu}"
                         Stretch="{Binding Path=EditValue, ElementName=cmbStretch}"
                        ShowLoadDialogOnClickMode="{Binding Path=EditValue, ElementName=cmbLoadDialogMode}" />


点击“Edit Image”  调用系统自带绘图工具进行修改

		/// <summary>
		/// 对Image控件上的图片进行修改
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="e"></param>
		private void ImgEdit_Click(object sender, RoutedEventArgs e)
		{
			string filePath = string.Format("\"{0}\"", ImgPath);
	
			// 先释放独占资源
			ImgOld = null;
	
			GC.Collect();
		
			System.Diagnostics.ProcessStartInfo processStartInfo = new System.Diagnostics.ProcessStartInfo();
			processStartInfo.FileName = "mspaint.exe";// 调用系统自带的绘图工具画图(修改)
			processStartInfo.Arguments = filePath;
			Process process = System.Diagnostics.Process.Start(processStartInfo);
			process.EnableRaisingEvents = true;
			process.WaitForExit();

			// 重然加载图片
			LoadImage();

		}





保存图片正常



其余部分代码:

		private String _imgPath = String.Empty;

		public String ImgPath
		{
			get
			{
				return _imgPath;
			}
			set
			{
				_imgPath = value;
				OnPropertyChanged("ImgPath");
			}
		}

		private void LoadImage()
		{
			ImgPath = @"C:\\Documents and Settings\\Administrator\\My Documents\\My Pictures\\A4T3S4B74T8E0001.jpg";
			ImgOld = new BitmapImage(new Uri(ImgPath, UriKind.Absolute));
			popupImageEdit.Source = ImgOld.Clone();
			_imgDisplay.Source = ImgOld.Clone();
		}

		BitmapImage ImgOld = null;



相关推荐
<p> 需要学习Windows系统YOLOv4的同学请前往《Windows版YOLOv4目标检测实战:原理与源码解析》, </p> <p> 课程链接 https://edu.csdn.net/course/detail/29865 </p> <h3> <span style="color:#3598db;">【为什么要学习这门课】</span> </h3> <p> <span>Linux</span>创始人<span>Linus Torvalds</span>有一句名言:<span>Talk is cheap. Show me the code. </span><strong><span style="color:#ba372a;">冗谈不够,放码过来!</span></strong> </p> <p> <span> </span>代码阅读是从基础到提高的必由之路。尤其对深度学习,许多框架隐藏了神经网络底层的实现,只能在上层调包使用,对其内部原理很难认识清晰,不利于进一步优化和创新。 </p> <p> YOLOv4是最近推出的基于深度学习的端到端实时目标检测方法。 </p> <p> YOLOv4的实现darknet是使用C语言开发的轻型开源深度学习框架,依赖少,可移植性好,可以作为很好的代码阅读案例,让我们深入探究其实现原理。 </p> <h3> <span style="color:#3598db;">【课程内容与收获】</span> </h3> <p> 本课程将解析YOLOv4的实现原理和源码,具体内容包括: </p> <p> - YOLOv4目标检测原理<br /> - 神经网络及darknet的C语言实现,尤其是反向传播的梯度求解和误差计算<br /> - 代码阅读工具及方法<br /> - 深度学习计算的利器:BLAS和GEMM<br /> - GPU的CUDA编程方法及在darknet的应用<br /> - YOLOv4的程序流程 </p> <p> - YOLOv4各层及关键技术的源码解析 </p> <p> 本课程将提供注释后的darknet的源码程序文件。 </p> <h3> <strong><span style="color:#3598db;">【相关课程】</span></strong> </h3> <p> 除本课程《YOLOv4目标检测:原理与源码解析》外,本人推出了有关YOLOv4目标检测的系列课程,包括: </p> <p> 《YOLOv4目标检测实战:训练自己的数据集》 </p> <p> 《YOLOv4-tiny目标检测实战:训练自己的数据集》 </p> <p> 《YOLOv4目标检测实战:人脸口罩佩戴检测》<br /> 《YOLOv4目标检测实战:中国交通标志识别》 </p> <p> 建议先学习一门YOLOv4实战课程,对YOLOv4的使用方法了解以后再学习本课程。 </p> <h3> <span style="color:#3598db;">【YOLOv4网络模型架构图】</span> </h3> <p> 下图由白勇老师绘制 </p> <p> <img alt="" src="https://img-bss.csdnimg.cn/202006291526195469.jpg" /> </p> <p>   </p> <p> <img alt="" src="https://img-bss.csdnimg.cn/202007011518185782.jpg" /> </p>
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页