C# winform cefsharp 截取网页元素图片

  1. 通过元素id找到该元素在网页中的坐标
  2. 获取winform窗体的坐标位置
  3. 计算该元素对应的在桌面上坐标
  4. 根据截图接口传入该元素对应桌面坐标,截取该元素图片

效果图如下:
调用代码如下,主要两个函数:

public string GetPicPath(){try{string script =@"(function(){var img = document.getElementById('verifyImg');var result=false;if(img!=null){oRect = img.getBoundingClientRect();result = oRect.left+','+oRect.top+','+oRect.right+','+oRect.bottom;return result;}return result;})();";Task<JavascriptResponse> jr = browser.EvaluateScriptAsync(script);jr.Wait();//等待脚本执行完if (jr != null){var response = jr.Result;Log.println("d", response.Success + "");if (response.Success && response.Result != null){Log.println("d","ok"+","+ response.Result);string xywh = response.Result.ToString();Log.println("d", "xywh=" + xywh);if (xywh.Contains(",")){string[] s = xywh.Split(',');int x = Convert.ToInt32(s[0]);int y = Convert.ToInt32(s[1]);int w = Convert.ToInt32(s[2])- Convert.ToInt32( s[0]);int h = Convert.ToInt32(s[3])- Convert.ToInt32(s[1]);Log.println("d", "x="+x+",y=" + y+",w="+w+",h="+h);//标题高度int title_h = this.Height - this.ClientRectangle.Height;//对应的窗体左边框距离浏览器控件宽度是18,标题和浏览器控件间隙高度也是18string imgPath = screenCut(this.Location.X+x+18, this.Location.Y+y+ title_h + 18, w, h);Log.println("d","图片路径:"+imgPath);this.pictureBox1.Image = Image.FromFile(imgPath);return imgPath;}}}} catch (Exception) { }return "";}
public string screenCut(int x,int y, int width, int height){try{//屏幕宽//int iWidth = Screen.PrimaryScreen.Bounds.Width;//屏幕高//int iHeight = Screen.PrimaryScreen.Bounds.Height;//按照屏幕宽高创建位图Image img = new Bitmap(width, height);//从一个继承自Image类的对象中创建Graphics对象Graphics gc = Graphics.FromImage(img);//抓屏并拷贝到myimage里gc.CopyFromScreen(new Point(x, y), new Point(0, 0), new Size(width, height));//this.BackgroundImage = img;//保存位图string filePath = @"img/" + Guid.NewGuid().ToString() + ".jpg";img.Save(filePath);Log.println("d", "截图完成!"+ this.Location.X+","+ this.Location.Y+","+ width+","+ height);return filePath;} catch (Exception) { }return "";}

总结:之前尝试过其他的方法,发现截出来图是空白的,这个方法有个缺点,就是要截取的图片不能被挡住,因为这个是调用电脑屏幕截图的

C# winform cefsharp 截取网页元素图片相关推荐

  1. js实现截取网页上特定位置的图片打印或保存

    js实现截取网页上特定位置的图片打印或保存 一.实现思路   具体思路是创建一个宽和高都是100%的canvas,使其能够覆盖整个页面,然后根据所要截取的图片起始位置相对于canvas的位置(因为是1 ...

  2. 如何截取网页以及切割网页元素进行图像识别

    1. 使用   driver.save_screenshot('login.png') 可以保存当前网页的截图到当前文件目录 2.使用   yzm = driver.find_element_by_x ...

  3. android截取网页图片,安卓版谷歌浏览器很快将获得滚动截图功能 可以用来截取整个网页...

    截图功能对用户来说应该是非常常用的功能,然而有时候截取网页时可能需要我们进行多次截图再拼接截图图片. 为解决这种问题现在已经有些软件提供滚动截图功能,滚动截图可帮助用户一次性将整个网页内容截图无需拼接 ...

  4. Winform嵌入Web网页-CefSharp组件

    Winform嵌入Web网页-CefSharp组件 WebBrower组件是基于本地操作系统的IE浏览器的,CSS解析和兼容性不太友好,一般我们不推荐使用.这里我们采用的是CefSharp这个开源组件 ...

  5. c# 实现网页加载后将页面截取为长图片

    背景 最近再做一个需求,需要对网页生成预览图,如下图 但是网页千千万,总不能一个个打开,截图吧:于是想着能不能使用代码来实现网页的截图.其实要实现c#教程这个功能,无非就是要么实现一个仿真浏览器,要么 ...

  6. html 图片局边框的边距,0032 如何使用css调整网页元素的边距和边框

    原标题:0032 如何使用css调整网页元素的边距和边框 上节课,将css文件独立为一个样式文件,达到了将内容和样式进行分离的目的. 这节课,要学习如何调整网页元素的边距和边框. 上节课的课后练习 使 ...

  7. html局部可复制,截取网页局部区域css样式的方法和系统的制作方法

    截取网页局部区域css样式的方法和系统的制作方法 [技术领域] [0001]本发明涉及计算机网络技术领域,特别是涉及一种截取网页局部区域CSS样式的方法和系统. [背景技术] [0002]CSS(Ca ...

  8. java爬虫下载图片到磁盘_java入门爬虫(爬取网页的图片下载到本地磁盘)

    java爬虫入门技术 我们需要用到http协议 从而建立java程序和网页的连接 URL url = new URL("https://www.ivsky.com/tupian/ziranf ...

  9. QQ浏览器怎么截取整个网页 QQ浏览器完整截取网页的方法

    浏览器在我们工作娱乐的时候给我们带来了许多便利,在我们浏览网页时可能有这样的需求,将某个页面的内容截取成图片,而QQ截图功能只能实现局部截图,因此这时候我们可以考虑使用流量器自带的截图工具,这里用QQ ...

  10. 怎么截取网页全图_FastStone Capture长截图怎么使用?滚动截图教程

    FastStone Capture长截图怎么使用?滚动截图教程.FastStone Capture是一款非常受大众们喜爱一款截图软件,具备着自定义截图.滚动窗口截图等多种截图功能,而且操作简便,容易上 ...

最新文章

  1. L09-10老男孩Linux运维实战培训-Nginx服务生产实战应用指南05(架构解决方案)
  2. 特斯拉Model 3国内起售价下调至23.59万元
  3. 网络工程师_要记录下来的一些题_4
  4. 微软推出MSDN2008中文版有些仓促,中文的MSDN2008Beta2内容都是E文的...
  5. CreateProcess failed: The system cannot find the file specified.
  6. 会话技术 —— Cookie 实现原理 || 在idea编辑器中设置代码的模板
  7. 考前自学系列·计算机组成原理·补码定点加减运算和溢出判断,浮点数的加减运算,原码的乘法
  8. CentOS Squid 安装配置
  9. mysql id会用完吗_数据库自增ID用完了会怎样?
  10. 数据填充规则之PKCS7
  11. Java内存运行机制
  12. JAVA编程规范总结
  13. GridView自带的分页功能的实现
  14. Hadoop Configuration 源码详解
  15. 2 str转byte失败_linux服务器,JAVA进行word转pdf
  16. cad快速选择命令快捷键_CAD图层快捷键命令应用讲解
  17. VISA/MasterCard/AE/DC/JCB卡号结构
  18. Linux驱动——ALSA
  19. blender 制作城市建筑模型
  20. 每日一佳——Hilbert Space Embeddings of Hidden Markov Models(Le Song,ICML,2010)

热门文章

  1. JavaScript实现超级玛丽小游戏
  2. kettle执行结果面板步骤度量(一)——转换
  3. linux怎么进tmp目录,关于linux下tmp文件夹
  4. 日本語トレーニング(二十一)
  5. 网页端调用客户端的cs 程序
  6. 使用idea运行CS项目后“客户端页面加载不出来“的解决方法
  7. 元宇宙、区块链和潘家园
  8. Zynga任命Noel Watson为董事会成员
  9. [汇]我常去逛的iOS干货文章、blog等
  10. 国内外优秀程序员的博客全在这了,请查收