图片变更检测

news2024/11/12 18:18:45

20240723

By wdhuag


目录

前言:

参考:

文件监控:

图片占用问题:

源码:


前言:

由于第三方图像处理软件不能回传图片(正常都能做,这里只是不想做),只能在保存到本地后,读取并显示结果图片。


参考:

C# FileSystemWatcher 实时监控文件的增加、修改、重命名和删除实例-CSDN博客

C#实时监测文件夹变化_c# 实时读取本地文件更新的数据-CSDN博客

C# 获得文件夹下最新的,或更早的文件_c#仅入库最新文件-CSDN博客

C# winform实现文件夹中图片的监控并实时显示更新_csdn winform 实时监测指定文件夹-CSDN博客

C# 加载和传递图片,导致内存溢出的问题_winform 内存溢出-CSDN博客

https://www.cnblogs.com/dongweian/p/15554614.html

https://www.cnblogs.com/TandyChan/p/4819672.html

c# - 将 PictureBox 中的图像调整到尽可能大,同时保持纵横比?_Stack Overflow中文网

windows 文件夹正在使用 “操作无法完成,因为其中的文件夹或文件已在另一程序中打开“ 解决办法_无法装载该文件,因为该文件正在使用-CSDN博客

[总结]C#用于BMP图像显示的方法_c# 拉伸显示bmp-CSDN博客

C#项目中pictureBox控件动态加载显示BMP文件_c# picturebox bmp-CSDN博客

C#中pictureBox控件详细使用方法_c# picturebox-CSDN博客

C#解析RAW图文件并在PictureBox中显示_c#显示raw-CSDN博客

https://www.cnblogs.com/jackrebel/p/3964495.html

c# 判断路径是否存在-CSDN博客

c# 识别图片格式的方法_c#判断图片类型-CSDN博客

C#中Image.FromFile(string path)函数报内存不足错误解决方法_c# 内存不足 fromimage-CSDN博客

关于Image.FromFile方法处理图像出现内存不足的问题_image.fromfile 内存不足-CSDN博客

C# 图片操作(图片读取,保存,转换,传输)_c# png图片通过bitmap显示-CSDN博客


文件监控:

这里选用的是FileSystemWatcher

FileSystemWatcher fileSystemWatcher;
string type;
string filter;

type = comboBox_MonitorType.Text.Replace("*", "");
filter = textBox_Name.Text;
fileSystemWatcher = new FileSystemWatcher();
fileSystemWatcher.Path = folderPath;
fileSystemWatcher.NotifyFilter = NotifyFilters.FileName | NotifyFilters.DirectoryName | NotifyFilters.Size;
fileSystemWatcher.IncludeSubdirectories = true;
fileSystemWatcher.Created += new FileSystemEventHandler(Monitor_Created);
fileSystemWatcher.Changed += new FileSystemEventHandler(Monitor_Changed);
fileSystemWatcher.Deleted += new FileSystemEventHandler(Monitor_Detected);
fileSystemWatcher.Renamed += new RenamedEventHandler(Monitor_Renamed);
fileSystemWatcher.EnableRaisingEvents = true;

图片占用问题:

需要检测文件是否被占用

private bool CheckInUse(string path) {
    int count = 0;
    Stopwatch sw = Stopwatch.StartNew();
Retry:
    if (sw.ElapsedMilliseconds > 3000) {
        sw.Stop();
        return false;
    }
    else {
        count++;
    }
    try {
        FileStream fileStream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read);
        fileStream.Close();
        return true;
    }
    catch (Exception ex) {
        goto Retry;
    }
}

读取图片后需要转换避免占用 

private Bitmap FileToBitmap(string path) {
    byte[] bytes = null;
    Stream stream = null;
    MemoryStream memoryStream = null;
    try {
        FileStream fileStream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read);
        bytes = new byte[fileStream.Length];
        fileStream.Read(bytes, 0, bytes.Length);
        fileStream.Close();

        stream = new MemoryStream(bytes);
        stream.Read(bytes, 0, bytes.Length);

        stream.Seek(0, SeekOrigin.Begin);
        memoryStream = new MemoryStream(bytes);
        return new Bitmap((Image)new Bitmap(memoryStream));
    }
    catch (ArgumentNullException ex) {
        return null;
    }
    catch (ArgumentException ex) {
        return null;
    }
    finally {
        if (stream != null)
            stream.Close();
    }
}

 图像输出后释放资源避免占用

this.pictureBox_LastImage.Image?.Dispose();
this.pictureBox_LastImage.SizeMode = PictureBoxSizeMode.Zoom;
if (image != null) {
    this.pictureBox_LastImage.Image = (Bitmap)image.Clone();
    image.Dispose();
}
else {
    this.pictureBox_LastImage.Image = null;
}
GC.Collect();

源码:

链接:度盘 
提取码:00yr 


END 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1943927.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

有什么好用的AI工具推荐吗?

AI视频生成:小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频https://aitools.jurilu.com/ 所有打工人集合!根据你问题中的描述,本小白正好都有涉及过相关领域的AI工具。 今天一次性讲清能处理所有办公场景的AI工具…

Harmony学习(二)------ArkUI(2)

1.主轴对齐方式.justifyContent build() {Column(){Text().width(200).height(100).backgroundColor(Color.Yellow).border({width:2})Text().width(200).height(100).backgroundColor(Color.Yellow).border({width:2}).margin(10)Text().width(200).height(100).backgroundCol…

现货黄金布林线怎么看?又应如何使用?

在现货黄金投资中,技术指标是很多人做交易分析和决策时所需要的工具。当然,由于电脑技术的发达,现在各种技术指标已经有成千上万种,其中一些经典的指标还是很受市场欢迎,比方说布林线。下面我们就来简单地介绍布林线在…

【调试笔记-20240723-Linux-gitee 仓库同步 github 仓库,并保持所有访问链接调整为指向 gitee 仓库的 URL】

调试笔记-系列文章目录 调试笔记-20240723-Linux-gitee 仓库同步 github 仓库,并保持所有访问链接调整为指向 gitee 仓库的 URL 文章目录 调试笔记-系列文章目录调试笔记-20240723-Linux-gitee 仓库同步 github 仓库,并保持所有访问链接调整为指向 gite…

Python爬虫(5) --爬取网页视频

文章目录 爬虫爬取视频指定url发送请求UA伪装请求页面 获取想要的数据解析定位定位音视频位置 存放视频完整代码实现总结 爬虫 Python 爬虫是一种自动化工具,用于从互联网上抓取网页数据并提取有用的信息。Python 因其简洁的语法和丰富的库支持(如 requ…

typora激活问题

不使用激活码解决。 1.右键桌面图标,打开文件位置 2.按照 Typora路径到 —> resources —> page-dist —> static —> js 这个路径找到这两个文件 LicenseIndex.180dd4c7.xxxxxxx.chunk.js LicenseIndex.180dd4c7.xxxxxxx.chunk.js (也可…

MySQL简介(超详细)

课程目标 • 了解数据库基本概念 • 熟悉MySQL数据库的常用操作 • 掌握Insert、Delete、Update、Select等常用SQL语句 • 理解MySQL数据库的事务,索引以及函数 • 了解MySQL数据库的存储过程和触发器 一、什么是数据库? 概念:数据库(D…

立创梁山派--移植开源的SFUD和FATFS实现SPI-FLASH文件系统

本文主要是在sfud的基础上进行fatfs文件系统的移植,并不对sfud的移植再进行过多的讲解了哦,所以如果想了解sfud的移植过程,请参考我的另外一篇文章:传送门 正文开始咯 首先我们需要先准备资料准备好,这里对于fatfs的…

Windows图形界面(GUI)-MFC-C/C++ - MFC项目工程框架解析

公开视频 -> 链接点击跳转公开课程博客首页 -> e​​​​​​链接点击跳转博客主页 目录 MFC项目 项目选择 配置安装 程序引导 MFC框架 环境设置 程序框架 代码编写 MFC解析 程序入口 执行流程 代码结构 应用程序类 窗口框架类 消息处理 消息类型 消息…

探索扫描二维码登录的奥秘:从前端到后端的无缝连接

🎉 博客主页:【剑九 六千里-CSDN博客】 🎨 上一篇文章:【React中的无状态组件:简约之美】 🎠 系列专栏:【面试题-八股系列】 💖 感谢大家点赞👍收藏⭐评论✍ 文章目录 1、…

[Jenkins]jenkins-cli.jar调用用户token启动任务

背景:项目入了一群od伙伴,但是od伙伴有单独的构建工程需要提交,由于jenkins的版本太拉闸,不能配置根据role和项目分权限,插件安装失败,不得已想到一个办法。让OD伙伴,在本地,用java&…

音频剪辑里的几种基础操作

音频对于视频的重要性,怎么强调都不为过,它在视频里扮演着举足轻重的角色,对观众有着极为深远的影响。下面为您阐述音频在视频中的关键意义: ① 情感传递:音频有强大的情感传达能力,借助声音的起伏变化、音…

windows网络应急排查

一、系统排查 msinfo32 #GUI显示的系统信息systeminfo #简单了解系统信息用户信息排查 排查恶意账号: 黑客喜欢建立相关账号用作远控: 1.建立新账号2.激活默认账号3.建立隐藏账号(windows中账号名$)cmd方法 net user #打印用户账号信息 ---看不到$结尾的隐藏账…

postgresql 使用navicat 导出报 gs_package 关系不存在问题解决。

1. 问题描述 临时接手的项目,使用的数据库是postgresql,使用navicat 17 Lite 免费版,导出就会报如下图所示的错误:2. 尝试的办法: 1) 换navicat 17 和navicat 17 for postgresql 试用版本 还是一样的错误。 2) 换pos…

大数据-43 Redis 功能扩展 Lua 脚本 对Redis扩展 eval redis.call redis.pcall

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…

运维团队如何借助分布式部署提升监控效率与可靠性

随着企业IT基础设施的日益复杂和分布式架构的广泛应用,传统的监控解决方案已经难以满足现代运维团队的需求。在这样的背景下,分布式部署作为一种新型的监控架构,以其灵活性、可扩展性和高可用性,成为了运维团队提升监控效率与可靠…

uni-app pinia搭建

1.新建store文件 新建index.js,代码: // import { // createPinia // } from pinia //const store createPinia() import * as Pinia from pinia const pinia Pinia.createPinia() export * from "./modules/user" export * from ".…

MATLAB算法实战应用案例精讲-【数模应用】Kappa一致性检验(附MATLAB、python和R语言代码实现)

目录 前言 算法原理 Kappa系数 什么是一致性检验? 如何完成一致性检验? (一)ICC组内相关系数 (二)Kappa一致性系数 (三)Kendall W 协调系数 (四)Bland-Altman图 检验一致性方法 SPSS SPSSAU 一、案例介绍 二、问题分析 三、软件操作及结果解读 四、结…

【中项】系统集成项目管理工程师-第4章 信息系统架构-4.8云原生架构

前言:系统集成项目管理工程师专业,现分享一些教材知识点。觉得文章还不错的喜欢点赞收藏的同时帮忙点点关注。 软考同样是国家人社部和工信部组织的国家级考试,全称为“全国计算机与软件专业技术资格(水平)考试”&…

【BUG】已解决:ValueError: All arrays must be of the same length

ValueError: All arrays must be of the same length 目录 ValueError: All arrays must be of the same length 【常见模块错误】 【解决方案】 问题原因 解决方法 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页,我是博主英杰&…