c#使用GeckoFx浏览器核心复制网页里某张图片
来源:互联网 发布:贝多芬第五交响曲知乎 编辑:程序博客网 时间:2024/06/13 02:32
前言:
最近有个项目网页截取项目,需要从浏览器里网页里的某张图片显示到picturebox里。原先打算使用自带的webbrowser,不过问题马上来了,使用ie核心那个网页上的js代码运行有错误,很是影响获取,无奈只能放弃webbrowser,考虑使用其他浏览器核心,现在.NET下可以使用Webkit内核与Gecko内核,这两个内核都是开源的,各自的代表为Xilium.CefGlue与GeckoFX,前者参考资料太少,只能看源代码一步一步摸索其机制,而且有某些浏览器响应事件有大坑,弄了一天无果只能考虑转向GeckoFX。它的资料倒是挺多的,不过他的使用环境配置需要留意,因为其需要使用到火狐开源的xulrunner,若geckofx-core与xulrunner版本对不上,调试模式下运行看不到Gecko控件窗口,直接运行exe报错,百度了大半天无果,谷歌也一样。。。。后台只能根据exe运行报错的位置翻看Gecko核心的代码,结果发现xulrunner版本对不上。所以去到gecko官网下载对应的,原来官网已经有说明geckofx-core与xulrunner版本对应的关系,真悲哀,当初没有去官网溜达。
回归正题,既然要获取网页里的图片,要么找到图片的地址下载下来再加载,这种个人觉得较麻烦,虽然容易实现。另一种是复制图片,将其弄到剪切板或者得到图片的byte数组再构建。在webbrowser下,我之前项目使用的是将图片复制到剪切板再从剪切板获取。
HTMLDocument html = (HTMLDocument)this.webBrowser_Inter.Document.DomDocument; IHTMLControlElement img = (IHTMLControlElement)webBrowser_Inter.Document.Images[0].DomElement; IHTMLControlRange range = (IHTMLControlRange)((HTMLBody)html.body).createControlRange(); range.add(img); range.execCommand("Copy", false, null); pictureBox1.Image = Clipboard.GetImage();
现在改用Gecko核心,由于对其不熟悉,所有仿造了上面的思路,结合在对象浏览器里查找其函数自己写了一段,第一二句就是获取img图片的对象,在Gecko里很简单
IGeckoArray<GeckoHtmlElement> img = browser.Document.GetElementsByTagName("img"); GeckoImageElement ima= (GeckoImageElement)img[0];接下来那些找不到类似的函数,无奈只能转变方式。直接在对象浏览器里输入image关键字,看看他本身有提供什么函数。还真有
public static byte[] ConvertGeckoImageElementToPng(IGeckoWebBrowser browser, GeckoHtmlElement element, float xOffset, float yOffset, float width, float height);
,真好刚刚合我的胃口,直接可以获取到图片的比特流,接下来就好办了
<span style="white-space:pre"></span>byte[] stream= Gecko.Utils.SaveImageElement.ConvertGeckoImageElementToPng(browser, ima, 0, 0, ima.Width, ima.Height); MemoryStream s = new MemoryStream(); s.Write(stream, 0, stream.Length); pictureBox1.Image = Image.FromStream(s);
完美解决问题
0 0
- c#使用GeckoFx浏览器核心复制网页里某张图片
- C# GeckoFX内核浏览器清空Cookie的方法
- C# 使用默认浏览器带网页
- C#使用默认浏览器打开指定网页
- C#怎么使用默认浏览器打开网页
- C# 使用默认浏览器打开网页
- C#网页复制
- 使用chrome浏览器禁止javascript复制无法复制的网页内容
- C# winform中使用默认浏览器打开网页
- C#图片浏览器
- C#图片浏览器制作
- C#简单图片浏览器
- c# 图片浏览器
- C# 网页图片采集
- c# 下载网页图片
- c# 下载网页图片
- C#下载网页图片
- c# 下载网页图片
- 文件过滤驱动实现目录重定向(二)
- 本博客声明
- IOS中XML解析之libxml2
- Server Side JavaScript Code Injection Attack服务端js注入攻击
- 1001 Sum Problem
- c#使用GeckoFx浏览器核心复制网页里某张图片
- Spark SQL-1-CLI方式
- uva 11045 uva 10330(EK最大流)
- 机器学习技法-1-Linear Support Vector Machine
- Jquery获取select,dropdownlist,checkbox下拉列表框的值
- lua学习笔记---Function(函数)
- Java学习笔记-语句-函数-数组
- Android系统架构
- linux shell命令之文件比较