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

C#读取本地图像的方法总结

前言:

大家好,我是上位机马工,硕士毕业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控件从入门到精通》


http://www.kler.cn/a/416403.html

相关文章:

  • 大米中的虫子检测-检测储藏的大米中是否有虫子 支持YOLO,VOC,COCO格式标注,4070张图片的数据集
  • 爬虫获取的数据如何有效分析以支持商业决策?
  • C/C++链接数据库(MySQL)超级详细指南
  • IDEA好用插件
  • SpringCloud框架学习(第六部分:Sentinel实现熔断与限流)
  • 消息称三星正与 OpenAI 洽谈,有望令 Galaxy AI 整合ChatGPT,三星都要和chatgpt合作了,你会使用chatgpt了吗?
  • 【Docker】Docker配置远程访问
  • NAT拓展
  • Python设计模式详解之16 —— 观察者模式
  • 实时数据开发|Flink如何实现不同数据源输入--DataSource模块
  • C#(14)七大原则
  • Java工程行业管理软件源码 - 全面的项目管理工具 - 工程项目模块与功能一览
  • 基于centos7.9使用shell脚本部署k8s1.25平台
  • JavaEE初学目录
  • 2024主流深度学习模型有哪些?
  • go使用sqlite3数据库实现CURD操作
  • 深度学习—参数初始化及激活函数Day35
  • Redis(非关系型数据库)的作用 详细解读
  • Java中如何获取泛型类型信息
  • 【C++ 算法进阶】算法提升二十四