图片变更检测

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.mzph.cn/web/48452.shtml

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

相关文章

Postman接口测试工具的使用

一、postman简介 Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件。作用:常用于进行接口测试。不需要安装。 特征:简单,实用,美观,大方。 二、Postman接口测试工具的使用 Postman不需要安…

MySQL的账户管理

目录 1 密码策略 1.1 查看数据库当前密码策略: 1.2 查看密码设置策略 1.3 密码强度检查等级解释(validate_password.policy) 2 新建登录账户 3 账户授权 3.1 赋权原则 3.2 常见的用户权限 3.3 查看权限 3.4 赋权语法 4 实例 4.1 示例1&#x…

python脚本制作循环执行命令行

python import subprocess import sysif __name____main__:ret 1while ret!0:ret subprocess.call(sys.argv[1:], textTrue)pack pip install pyinstaller pyinstaller --onefile loop.py 使用场景 使用上面生成的loop.exe调用cmd命令,执行失败了返回值&#xf…

项目实战二

Git 服务器 公共代码平台GitLab 配置gitlab 1.设置管理员帐号密码 2.让程序员传代码到20主机上需要配置: 创建用户 mark 1234.com 创建用户组devops 然后把mark 添加到devons 创建项目 http://192.168.88.20/devops/myproject.git 3.客户端操作&#x…

textblob文本处理、词性分析与情感分析

1 前言 textBlob 是一個简单易用的 NLP库,基于 NLTK 和 pattern库, 提供了文本处理和情感分析等功能。 安装 textblob0.18.0 nltk3.8.1测试环境:Python3.10.9 使用前,先运行下面代码先下载些文件 import nltk nltk.download…

C#医学影像管理系统源码 PACS系统源码带三维重建,全院级数字医学影像系统

C#医学影像管理系统源码 医学影像存储与传输系统源码 PACS系统源码带三维重建,三甲以下医院都能满足。 PACS系统模块组成 : 工作站: 分诊工作站、超声工作站、放射工作站、内镜工作站、病理工作站。 基本信息维护: 输入模板、输入…

Layer2区块链扩容方案(1)——总述

写在前面 这篇文章作为一个简单介绍,很多技术只是大致提及或者引用,之后会在详细学习后逐项解释。 补充知识 在了解扩容方案之前,我们最好了解一些相关的知识概念 EVM “EVM” 是“Ethereum Virtual Machine”(以太坊虚拟机&…

相机的内参与外参

目录 一、相机的内参二、相机的外参 一、相机的内参 如下图所示是相机的针孔模型示意图: 光心O所处平面是相机坐标系(O,P),像素平面所在坐标系为像素坐标系(O’,P’)。 焦距f:O到O’的距离 相机的内参表示的是相机坐标…

QT 信号槽机制

核心函数为 QMetaObject::Connection QObject::connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type Qt::AutoConnection) 参数为 1.信号发生对象 2.信号发生对象的信号 3.槽对象 4.槽对象的槽函…

嵌入式linux系统中压力测试的方法

在Linux环境下,确保系统各项资源充分且稳定地运行对任何系统管理员来说都至关重要。特别是在生产环境中,理解如何对系统资源进行基准测试和压力测试可以帮助预防未来的问题,同时也能够优化现有系统的性能。 在本文中,我们将探讨如何使用命令行工具来对Linux系统的CPU、内存…

C语言 ——— 函数指针的定义 函数指针的使用

目录 何为函数指针 打印 函数名的地址 及 &函数名的地址 函数指针的代码(如何正确存储函数地址) 函数指针的使用 何为函数指针 类比: 整型指针 - 指向整型数据的指针,整型指针存放的是整型数据的地址 字符指针 - 指向字…

SQLynx数据库管理工具

背景:业主对网络安全要求比较高,不提供VPN等远程工具,也不能开放3306端口到互联网。那怎么样运维数据库就是个难题?找到了SQLynx这个可以网页访问的数据库管理工具,给大家分享一下。 1.介绍 SQLynx原名SQL Studio&…

平面五杆机构运动学仿真matlab simulink

1、内容简介 略 89-可以交流、咨询、答疑 2、内容说明 略 ] 以 MATLAB 程序设计语言为平台 , 以平面可调五杆机构为主要研究对象 , 给定机构的尺寸参数 , 列出所 要分析机构的闭环矢量方程 , 使用 MATLAB 软件中 SIMULINK 仿真工具 , 在 SIMULINK 模型窗口下建立数…

深入浅出WebRTC—LossBasedBweV2

WebRTC 同时使用基于丢包的带宽估计算法和基于延迟的带宽估计算法那,能够实现更加全面和准确的带宽评估和控制。基于丢包的带宽估计算法主要依据网络中的丢包情况来动态调整带宽估计,以适应网络状况的变化。本文主要讲解最新 LossBasedBweV2 的实现。 1…

Docker Desktop安装

0 Preface/Foreward 1 安装 1.1 运行docker安装包 安装完Docker Desktop后,运行Docker Desktop,出现WSL 2安装不完整情况,具体情况如下: 解决方法:旧版 WSL 的手动安装步骤 | Microsoft Learn 也可以直接下载新的安…

2023发卡商城源码,最新自助下单彩虹云商城系统免授权无后门源码

# 彩虹自助下单系统 > PHP版本: > 7.0.1 ____ * 去除所有授权验证 * 支持自定义说说接口 * 去除后台广告与更新 * 可自定义易支付接口 ____ >安装教程: > 1、上传源代码到空间或服务器,并确保权限可读写。 > 2、上传完成后,使用浏览器…

VulnHub:cengbox1

靶机下载地址,下载完成后,用VirtualBox打开靶机并修改网络为桥接即可搭建成功。 信息收集 主机发现和端口扫描 扫描攻击机(192.168.31.218)同网段存活主机确认目标机ip,并对目标机进行全面扫描。 nmap 192.168.31.…

springboot 项目整合 AI (文心一言)

百度智能云网址:https://cloud.baidu.com/?fromconsole 注册——个人认证——登录成功 第一步:点击千帆大模型平台 ​ 第二步:点击应用接入——创建应用 ​ 第三步:点击接口文档——API列表——可以点击指定模型进行查看调…

H3CNE(路由基础、直连路由与静态路由)

目录 6.1 直连路由 6.2 静态路由理解性实验 6.2.1 配置直连路由 6.2.2 配置静态路由 6.3 路由表的参数与比较 6.3.1 优先级的比较 6.3.2 开销的比较 6.4 路由器中的等价路由、浮动路由、默认路由 6.4.1 等价路由 6.4.2 浮动路由 6.4.3 默认路由(缺省路由) 6.1 直连路…

Python爬虫:代理ip电商数据实战

引言:数据访问管理引发的烦恼 作为一名Python博主,爬虫技能对于获取和分析数据至关重要,经常爬一下,有益身心健康嘛。爬虫技术对很多人来说,不仅仅是一种工具,更像是一种艺术,帮助我们从互联网…