前言:
大家好,我是上位机马工,硕士毕业4年年入40万,目前在一家自动化公司担任软件经理,从事C#上位机软件开发8年以上!我们在C#开发C#程序的时候,有时候需要读取本地图像,下面进行详细介绍如何实现这一需求!
1、方法1(通过文件路径)
封装一个函数用于读取图像,如下:
private Bitmap ReadImage1(string fileName)
{
Bitmap bitmap = new Bitmap(fileName);
return bitmap;
}
使用方法1的函数来读取本地图像,会占用本地图像,代码如下:
string tempImg1Path = "待定.png";
Bitmap bitmap1 = ReadImage1(tempImg1Path);
bitmap1.Save(tempImg1Path);
上述代码,先读取一个本地图像赋值给bitmap1,然后调用保存图像的函数,并且这个图像的名称和路径不变,运行程序以后就会报错,如下:
上述的错误就是由于使用方法1读取图像的方法会导致本地图像被占用,那么有没有可以解决图像占用的方法呢,看方法2
2、方法2(通过文件流),强烈推荐
封装一个函数用于读取图像,如下:
private Bitmap ReadImage2(string fileName)
{
Bitmap bitmap;
using (FileStream fs = new FileStream(fileName, FileMode.Open))
{
bitmap = new Bitmap(fs);
}
return bitmap;
}
方法2使用文件流的方式读取图像,并将图像赋值给bitmap2,然后调用保存图像的函数,并且这个图像的名称和路径不变,运行程序不会报错,说明使用文件流读取图像,并不会导致本地图像被占用,在实际开发中强烈建议使用方法2来读取本地图像,代码如下:
string tempImg1Path = "待定.png";
Bitmap bitmap2 = ReadImage2(tempImg1Path);
bitmap2.Save(tempImg1Path);
作者介绍
马工2017年硕士毕业,一直从事上位机软件开发工作,在我工作的第四年年薪突破了40万+,为了帮助跟我一样从底层出身的上位机软件工程师早日达到高级工程师的水平,早日找到30万+的工作,我根据多年项目经验,总结出了一系列可直接用于项目的C#上位机实战教程推荐给大家,目前在CSDN已经超过一千人订阅,如果你不甘贫庸,想像我一样早日拿到高薪,马工强烈推荐你早日学这套教程,雷军曾说这个世界上有99%的问题别人都遇到过,你要做的不是闷头干!而是找这个领域的专家问一下,这是最快速提升自己的方法!
年入30万+C#上位机实战必备教程推荐(点击下方链接即可访问文章)
1、《C#串口通信从入门到精通》
2、《C#与PLC通信从入门到精通 》
3、《C# Modbus通信从入门到精通》
4、《C#Socket通信从入门到精通 》
5、《C# MES通信从入门到精通》
6、《winform控件从入门到精通》