C#获取网页中指定图片的方法
2014-07-04 10:12
246 查看
获取网页中指定图片是许多程序员都会面临的问题。对于不随源url刷新而变化的图片,可以通过获取图片url的方法确定图片。但是对于随源url刷新而变化的图片(如验证码),则不能通过源url确定。另外即便图片不随源url变化而改变,但是通过源url得到的也只是包含该图片的一个网页,仍然面临着将网页中图片提取为图片的工作。本文我将向大家介绍一种MSDN上的方法,该方法可以将网页中指定的图片获取为图片格式。参考资料网址
首先在项目中,引入Microsoft.mshtml,然后在代码中添加命名空间using mshtml;
然后在项目中添加如下代码:
如:我要从新浪登陆界面上提取一个id为img_check的验证码图片,并将获得的图片保存到一个picturebox中,截图如下:
我的代码如下:
希望这篇文章能对大家有所帮助。有需要交流的朋友可以发邮件到mushaoqiong@126.com,我会尽快回复。
首先在项目中,引入Microsoft.mshtml,然后在代码中添加命名空间using mshtml;
然后在项目中添加如下代码:
///<summary> /// 获取WebBrowser指定的图片 /// </summary> /// <param name="webBrowser">需要获取图片的WebBrowser</param> /// <param name="imgID">指定的图片的id(优先查找指定id)</param> /// <param name="imgSrc">指定的图片的src,支持模糊查询</param> /// <param name="imgAlt">指定的图片的src, 支持模糊查询</param> /// <returns></returns> public static Image GetRegCodePic(ref WebBrowser webBrowser, String imgID, String imgSrc, String imgAlt) { HTMLDocument doc = (HTMLDocument)webBrowser.Document.DomDocument; HTMLBody body = (HTMLBody)doc.body; IHTMLControlRange rang = (IHTMLControlRange)body.createControlRange(); IHTMLControlElement img; // 如果没有图片的ID,通过Src或Alt中的关键字来取 if (imgID.Length == 0) { Int32 ImgNum = GetPicIndex(ref webBrowser, ref imgSrc, ref imgAlt); if (ImgNum == -1) return null; img = (IHTMLControlElement)webBrowser.Document.Images[ImgNum].DomElement; } else img = (IHTMLControlElement)webBrowser.Document.All[imgID].DomElement; rang.add(img); rang.execCommand("Copy", false, null); Image regImg = Clipboard.GetImage(); Clipboard.Clear(); return regImg; } /// <summary> /// 获取WebBrowser指定图片的索引 /// </summary> /// <param name="webBrowser">指定的WebBrowser</param> /// <param name="imgSrc">指定的图片src,支持模糊查询</param> /// <param name="imgAlt">指定的图片alt,支持模糊查询</param> /// <returns></returns> public static Int32 GetPicIndex(ref WebBrowser webBrowser, ref String imgSrc, ref String imgAlt) { IHTMLImgElement img; // 获取所有的Image元素 for (Int32 i = 0; i < webBrowser.Document.Images.Count; i++) { img = (IHTMLImgElement)webBrowser.Document.Images[i].DomElement; if (imgAlt.Length == 0) { if (img.src.IndexOf(imgSrc) >= 0) return i; } else { if (imgSrc.Length == 0) { // 当imgSrc为空时,只匹配imgAlt if (img.alt.IndexOf(imgAlt) >= 0) return i; } else { // 当imgSrc不为空时,匹配imgAlt和imgSrc任意一个 if (img.alt.IndexOf(imgAlt) >= 0 || img.src.IndexOf(imgSrc) >= 0) return i; } } } return -1; }这是MSDN上的原始代码,在实际应用中可以根据自己的实际情况加以修改。
如:我要从新浪登陆界面上提取一个id为img_check的验证码图片,并将获得的图片保存到一个picturebox中,截图如下:
我的代码如下:
HTMLDocument doc = (HTMLDocument)webBrowser1.Document.DomDocument; HTMLBody body = (HTMLBody)doc.body; IHTMLControlRange rang = (IHTMLControlRange)body.createControlRange(); IHTMLControlElement img; img = (IHTMLControlElement)webBrowser1.Document.All["check_img"].DomElement; rang.add(img); rang.execCommand("Copy", false, null); Image regImg = Clipboard.GetImage(); Clipboard.Clear(); pictureBox_Code.Image = regImg;运行结果如下:
希望这篇文章能对大家有所帮助。有需要交流的朋友可以发邮件到mushaoqiong@126.com,我会尽快回复。
相关文章推荐
- C#获取指定网页源码的几种方法
- HTML to Image in C#指定网页地址,获取内容为图片
- python获取网页中所有图片并筛选指定分辨率的方法
- C#获取指定网页源码的几种方法
- [C#]获取某年指定周的开始日期和结束日期的通用方法
- C#实现 获取指定字节长度 中英文混合字符串 的方法
- 获取网页URL地址及参数等的两种方法(js和C#)
- 获取网页URL地址及参数等的两种方法(js和C#)
- 转:获取网页URL地址及参数等的两种方法(js和C#)
- C#获取图片的指定部分
- 将指定网页添加到收藏夹的方法(c#)
- C#获取网页源代码的5种方法
- C#实现 获取指定字节长度 中英文混合字符串 的方法
- [C#]对我的网页动态生成图片方法的修改
- 转:获取网页URL地址及参数等的两种方法(js和C#)
- c#获取网页源代码的几种方法
- C#实现 获取指定字节长度 中英文混合字符串 的方法
- 用asp.net(c#)获取网页源代码(两种方法)
- C# 获取网页内容[方法一]
- C# winform 获取网页的图片验证码,并显示