C# webBrowser 截取验证码截图的两种方式
来源:互联网 发布:免费票据打印软件 编辑:程序博客网 时间:2024/05/16 09:37
本来是想把网页加载出来的验证码的图片控件<img>中的url直接放到PictureBox,但发现url是一个没有图片格式后缀的地址(或是个action),所以图片没能显示在PictureBox中。
从网上搜索相关解决办法,测试通过了其中两种。
环境:vs2008
第一种:
属性声明区域引入:
[DllImport("gdi32.dll", CharSet = CharSet.Auto, SetLastError = true, ExactSpelling = true)]
public static extern int BitBlt(HandleRef hDC, int x, int y, int nWidth, int nHeight, HandleRef hSrcDC, int xSrc, int ySrc, int dwRop);
截图方法中:
int x = 10;int y = -20; //用于保存图片的位图对象 Bitmap bmSave = new Bitmap(220, 60); //创建该位图的Graphics对象 Graphics gSave = Graphics.FromImage(bmSave); Graphics gSrc = this.webBrowser1.CreateGraphics(); HandleRef hDcSave = new HandleRef(null, gSave.GetHdc()); HandleRef hDcSrc = new HandleRef(null, gSrc.GetHdc()); BitBlt(hDcSave, x, y, 220, 60, hDcSrc, 0, 0, 0xcc0020); gSrc.ReleaseHdc(); gSave.ReleaseHdc(); bmSave.Save("d://test.png"); gSrc.Dispose(); gSave.Dispose(); bmSave.Dispose();
这样PictureBox的图像地址设置为"d://test.png",就可以显示图片了。
需要说明的是起始坐标X,Y可以设置负数,这也许能让你截取图片时,找到最佳切入位置。
第二种:
比较简单,DrawToBitmap方法,网上也有很多举例的,但发现vs2008的webBrowser没有这个方法。通过查阅msdn介绍,发现这个方法在r它“老子”那里。
ectangle rect = new Rectangle(0, 0, 220, 60); Bitmap bmSave1 = new Bitmap(220, 60); this.webBrowser1.Parent.DrawToBitmap(bmSave1, rect); bmSave1.Save("d://test1.png");
注意第一句的Rectangle(0, 0, 220, 60)前两个参数是0(不可以是负数,否则报错)。
问题来了,图片在网页的什么地方??幸好又碰到一位高人,把这个图片的网页元素设置到网页的左上角,如下:
HtmlElement ele_pic = this.webBrowser1.Document.GetElementsByTagName("img")[0]; ele_pic.Style = "position: absolute; z-index: 9999; top: 0px; left: 0px";
这样截取图片的起始起始位置就是0,0,从而保证完好无损的截图原图片。
以上内容中的220, 60 不用多说了,是图片的大小,这个你可以从网页中显示的图片,右键-属性得知。
- C# webBrowser 截取验证码截图的两种方式
- C#利用WebBrowser截取验证码图片
- delphi webbrowser与idhhtp两种方式下载验证码
- C#利用WebBrowser截取验证码图片 识别率一半
- c# webBrowser截图
- 字符串截取的两种方式
- android图片截取的两种方式
- 验证码的两种生成方式
- 两种方式截取字符串
- C#截取字符串的几种方式
- C#及wpf WebBrowser截图
- ANDROID 对VIEW 截图的两种方式
- js中截取字符串的两种方式 及其区别
- android 短信验证码自动填写的两种方式
- 生成图片验证码的两种实现方式
- 验证码功能的两种实现方式
- WebService的两种用户验证方式
- WebService的两种用户验证方式
- 常州隆胸手术整形医院
- 判断空值
- Cocos2d-x lua 面向对象封装的一个简单弹出框
- 对工厂模式的理解
- crackme.chm之figugegl_2b
- C# webBrowser 截取验证码截图的两种方式
- OpenGL学习——二维几何变换
- DIV元素响应键盘事件
- 字符串匹配算法
- Objective-C中的instancetype和id关键字
- 常州隆胸整形有哪些医院
- 2复合
- adobe acrobat 无效批注对象
- 相关运算(correlation filter)与 imfilter