同事在处理一个监控识别功能,想直接读取监控的视频流;但看他磨了2天都没搞掂。整个项目不能拖,于是另辟途径,想到的就用监控原来的画面展示,然后对屏幕进行截取为图片再分析。说干就干。。随手就用C#写了一个屏幕图片的截取的函数。现在共享一下吧,估计以后用得上。
代码语言:javascript复制public void Capture_Screen() {
//设置显示屏幕为主屏(windows主屏 Screen.PrimaryScreen)
Screen scr = Screen.PrimaryScreen;
//获取屏幕边界参数
Rectangle rc = scr.Bounds;
//获取屏幕分辨率宽度值
int iWidth = rc.Width;
//获取屏幕分辨率高度值
int iHeight = rc.Height;
//创建Bitmap位图类(尺寸与分辨率相同)
Image myImage = new Bitmap(iWidth, iHeight);
//从一个继承自Image类的对象中创建Graphics对象
Graphics g = Graphics.FromImage(myImage);
//截取屏幕并复制到(g)myimage里
g.CopyFromScreen(new Point(0, 0), new Point(0, 0), new Size(iWidth, iHeight));
//将myImage保存为文件,此处的保存路径和文件名以及图片格式可自行修改。当前文件名:截屏 系统日期时间(年月日 时分秒)
string fileName = DateTime.Now.ToString("yyyy年MM月dd日HH时mm分ss秒") ".jpg";//以日期命名文件名
string filePath = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;//获取应用程序运行的路径
myImage.Save(filePath fileName, ImageFormat.Jpeg);
MessageBox.Show("文件保存在:" filePath fileName);
}
程序比较简单不多说了,看到的就留个脚印吧。