C#中加载图片的资源释放

在C#中,能够用文件流的方法加载图片并释放资源:

复制代码
using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read))
{
    tmpImage = Image.FromStream(fs);
    this.pbShow.Image = tmpImage;
}

但是,有些文件,比如Gif图片无法用这个方法加载,所以类似的图片加载使用下面的方式进行释放资源:

复制代码
using (Image image = Image.FromFile(filePath))  //用此方法释放加载的文件资源,否则多次加载占的内存还在
{
    gifImage = image.Clone() as Image;  //复制图像赋值
    this.pbShow.Image = gifImage;
}

也能够两者结合,以下效果:

复制代码
using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read))
{
    using (Image image = Image.FromStream(fs))
    {
        tmpImage = image.Clone() as Image;
        this.pbShow.Image = tmpImage;
    }
}

当然,前面需要对gifImag进行释放资源。

相关推荐
Funlang1 小时前
给机器写的 JavaScript 造个笼子
开发语言·javascript·ecmascript
普通人61 小时前
PHP文件读写完全指南
开发语言·php·1024程序员节
坤坤子吖2 小时前
Linux网络编程:TCP服务器的多进程与多线程实现
linux·服务器·开发语言·网络·c++·笔记·学习
一晌小贪欢3 小时前
Python基础:第 09 篇 · while 循环:重复直到不满足
开发语言·c++·python·数据可视化·面向对象·python办公
xiaoye-duck3 小时前
《C++ 项目:手写大模型接入 SDK》LLMManager架构设计与实现
开发语言·网络·c++·语言模型
一条大祥脚4 小时前
CuTe 与 CuTe DSL:从 C++ 模板元编程到 Python DSL 的 GPU 编程演进
开发语言·c++·python·cutlass·cute·cute dsl
FRing034 小时前
vue2干货总结8(路由模块封装、router-link、声明式导航、路由重定向、编程式导航)
开发语言·前端·vue.js·vue2
旖旎夜光4 小时前
【C++ 基础入门】C++ 多态(上):虚函数、重写、override/final 与抽象类
开发语言·c++·笔记·学习
starzy19905 小时前
深入理解Scala嵌套函数:作用域封装之道
开发语言·scala
Sakura_j_h_5 小时前
从零写一个 MCP stdio Server:用 Python 校验博客文章格式
开发语言·python·自动化·ai工具·mcp·json-rpc