/// <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;
}

  

获得WebBrowser中的图片数据的更多相关文章

  1. PHP ~ 通过程序删除图片,同时删除数据库中的图片数据 和 图片文件

    删除单张图片 <?php         require_once '../../conn.php';              //连接数据库         $ID = $_GET['ID' ...

  2. 如何在数据表中存取图片 - 回复 "三足乌" 的问题

    问题来源: http://www.cnblogs.com/del/archive/2009/05/28/1491186.html#1801853 准备工作:1.在空白窗体上添加: ClientData ...

  3. 【在网页中获取截图数据】Chrome和Firefox下的实战经验

    [转载自我在segmentfault的专栏:https://segmentfault.com/a/1190000004584071] 最近在实现一个功能,需求如下: 前提:当前页面无弹窗 页面任意位置 ...

  4. 【小梅哥FPGA进阶教程】串口发送图片数据到SRAM在TFT屏上显示

    十五.串口发送图片数据到SRAM在TFT屏上显示 之前分享过rom存储图片数据在TFT屏上显示,该方法只能显示小点的图片,如果想显示TFT屏幕大小的图片上述方法rom内存大小不够.小梅哥给了个方案,利 ...

  5. iOS 中使用Base64编码方式编码图片数据

    最近一个项目要求对图片数据简单加密下,就是那种不能直接看到图片内容就行.于是我使用了base64编码对图片数据进行编码,把图片2进制数据变成了base64的字符串,再把这个字符串保存到server的数 ...

  6. python2/3中 将base64数据写成图片,并将图片数据转为16进制数据的方法、bytes/string的区别

    1.python2将base64数据写成图片,并将数据转为16进制字符串的方法 import binascii img = u'R0lGODlhagAeAIcAAAAAAAAARAAAiAAAzABE ...

  7. matlab中图片数据类型转换uint8与double

    matlab中处理图像像素点数据: img1=double(imread('lenna.bmp')); matlab中imshow图片,要先转换成uint8: subplot(1,2,1),imsho ...

  8. 在html页面中直接嵌入图片数据

    一般情况,通常是在html页面中应用图片的链接,如: <img src="http://baidu.com/logo.gif">   但是,这样的前提是我们需要将图片先 ...

  9. Java中处理接口返回base64编码的图片数据

    在做接口测试的时候,某些接口返回的content是一大段加密文字.这种情况下,有可能是返回的图片加密数据,需要将这些数据转换成图片进行保存查看. 例如: 这里,可以看到Content对应的键值开头有“ ...

随机推荐

  1. vim编辑文件警告Swap file already exists ,如何删除vim编辑产生的.swp文件?查看隐藏文件命令

    vim编辑文件警告Swap file already exists,如何删除vim编辑产生的.swp文件?查看隐藏文件命令 Linux(centos7)下多个用户同时编辑一个文件,或编辑时非正常关闭, ...

  2. VPS高性能虚拟机KVM详解

    1. KVM 介绍 1.0 虚拟化简史 其中,KVM 全称是 基于内核的虚拟机(Kernel-based Virtual Machine),它是Linux 的一个内核模块,该内核模块使得 Linux ...

  3. LCA 最近公共祖先 (模板)

    #include <iostream> #include <stdio.h> #include <cstring> #include <vector> ...

  4. SharePoint 解决管理员密码修改后各种问题的来袭

    问题描述:本人用的是Win10自带虚拟机Hyper-V.Windows Service 2012R2.SQL2014和SharePoint2016,由于有一段时间没有登录虚拟机,在此登录的时候提示密码 ...

  5. spark读取hbase形成RDD,存入hive或者spark_sql分析

    object SaprkReadHbase { var total:Int = 0 def main(args: Array[String]) { val spark = SparkSession . ...

  6. Django框架----分页器(paginator)

    Django的分页器(paginator) view.py from django.shortcuts import render,HttpResponse # Create your views h ...

  7. ogg 12.3 中 format release的变化

    Non-CDB databases with compatibility set to 12.1, FORMAT RELEASE 12.2 or above is supported. Non-CDB ...

  8. python 3.7 方向键乱码

    原因是缺少安装包libreadline-dev 第一步安装libreadline-dev包:sudo apt-get install libreadline-dev(centos安装:yum -y i ...

  9. JAVA获取不同操作系统的分隔符等参数

    import java.util.Properties; public class SeparatorUtils { /* system properties to get separators */ ...

  10. 在使用springMVC时,页面报的404异常

    HTTP Status – Not Found Type Status Report Message /WEB-INF/test/hello.jsp Description The origin se ...