[原创分享]网页截图

dylike 2009-09-01 04:23:27
加精
功能与说明:
自动对指定的网页进行整页截图
为方便使用,已做成单独的VB文件.
自定义图片保存地址,自定义图片格式
可获取截图进度



'-------WebCapture模块代码-------
Module WebCaptureModel
Public Class WebCapture
Public MaxLength, ValueLength As Integer
Private WithEvents WB As New WebBrowser
Private BP As Bitmap
Public XX, YY As Integer
Private ISOK As Integer = 0
Private SPTH As String
Private BPFMT As Drawing.Imaging.ImageFormat
Private NURL As String = ""
Public Event CaptureCompleted(ByVal e As String)
Private OKOK As Boolean = True
Private Sub wb_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WB.DocumentCompleted
On Error Resume Next
If OKOK = False Then
If BP IsNot Nothing Then BP.Dispose()
If XX = 0 Or YY = 0 Then
XX = WB.Document.Body.GetAttribute("scrollwidth")
End If
YY = WB.Document.Body.GetAttribute("scrollHeight")
WB.Size = New Point(XX, YY)
BP = New Bitmap(XX, YY)
WB.DrawToBitmap(BP, New Rectangle(0, 0, XX, YY))
If My.Computer.FileSystem.FileExists(SPTH) = True Then
Kill(SPTH)
End If
BP.Save(SPTH, BPFMT)
RaiseEvent CaptureCompleted(NURL)
OKOK = True
End If
End Sub
Public Sub StartCapture(ByVal URL As String, ByVal SavePath As String, ByVal BitmapFormat As System.Drawing.Imaging.ImageFormat)
Try
WB.ScrollBarsEnabled = False
OKOK = False
SPTH = SavePath
NURL = URL
BPFMT = BitmapFormat
WB.Navigate(URL)
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub

Private Sub WB_ProgressChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.WebBrowserProgressChangedEventArgs) Handles WB.ProgressChanged
MaxLength = e.MaximumProgress
ValueLength = e.CurrentProgress
End Sub
End Class

End Module




'---------功能调用代码--------
Public Class Form2
Private WithEvents CP As New WebCapture
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Label1.Text = "正在捕获网页..."
'提供用户正在操作
Timer1.Enabled = True
'控制进度条
CP.StartCapture(TextBox1.Text, "c:\windows\temp\12312322222222.bmp", Imaging.ImageFormat.Bmp)
'开始捕获并保存为BMP格式图片
End Sub

Private Sub CP_CaptureCompleted(ByVal e As String) Handles CP.CaptureCompleted
Label1.Text = "网页捕获完成"
Shell("mspaint.exe c:\windows\temp\12312322222222.bmp", AppWinStyle.NormalFocus, False)
'打开保存的图片
Timer1.Enabled = False
'结束进度条控制
End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
On Error Resume Next
PB.Maximum = CP.MaxLength
PB.Value = CP.ValueLength
End Sub
End Class


功能调用演示图


最终截图演示(已缩小比例处理)
...全文
2539 77 打赏 收藏 转发到动态 举报
写回复
用AI写文章
77 条回复
切换为时间正序
请发表友善的回复…
发表回复
lhjsj 2011-08-23
  • 打赏
  • 举报
回复
学习中
xmwung 2011-04-19
  • 打赏
  • 举报
回复
的确会出现截图不全的问题。。。
牧心 2010-06-25
  • 打赏
  • 举报
回复
学习一下
funwaiwa 2009-12-11
  • 打赏
  • 举报
回复
顶一下吧!!
Jave.Lin 2009-12-01
  • 打赏
  • 举报
回复
VB 看得不很懂。
sdjh 2009-10-24
  • 打赏
  • 举报
回复
进来学习,谢谢楼主分享!
liuyilin888 2009-10-24
  • 打赏
  • 举报
回复
进来学习,谢谢楼主分享!
shenmogongwu 2009-10-17
  • 打赏
  • 举报
回复
学习
冰岛男孩 2009-09-04
  • 打赏
  • 举报
回复
学习一下……
glgsmanman 2009-09-03
  • 打赏
  • 举报
回复
高手!!! 学习了
yyb2647487 2009-09-03
  • 打赏
  • 举报
回复
恩 很不错的创意
ybsh1034 2009-09-03
  • 打赏
  • 举报
回复
zyckxd 2009-09-03
  • 打赏
  • 举报
回复
很好!
Delta 2009-09-03
  • 打赏
  • 举报
回复
收藏了。要是C#的就更好了。
dahaidao 2009-09-03
  • 打赏
  • 举报
回复
可以放在服务器上调用么?
winyxq 2009-09-03
  • 打赏
  • 举报
回复
先学习一下,谢谢了
PonLCan 2009-09-03
  • 打赏
  • 举报
回复
学习了!
whese 2009-09-02
  • 打赏
  • 举报
回复
顶一下学习
klinghr 2009-09-02
  • 打赏
  • 举报
回复
学习。
dylike 2009-09-02
  • 打赏
  • 举报
回复
[Quote=引用 36 楼 aimeast 的回复:]
引用 32 楼 dylike 的回复:
引用 31 楼 aimeast 的回复:
经测试, WebBrowser 的 DrawToBitmap 很不好用。
要想截出好图形,必须要人工干预。目前找不到一个自动化方法。
楼主说的WB.Document.Body.GetAttribute("scrollwidth")方法也不好用。
会有一定的空间不能截到,而且还会出现滚动条。


因为有些网站的页面代码没有提供完全,然而并不是需要完全的代码才能正常显示,如没有 </这样的关闭符,不影响显示,但这给Webbrowser识别带来了影响.所以极少数地方会偶尔截不到.
滚动条是可以控制的,就是控制Webbrowser是否启用滚动条.
DrawToBitmap截的图很好的,BMP格式,最完美的点阵图,不知道你说的不好用是什么.


有无滚动条我不知道怎么控制,我每次截图,都不能截完整。
但是你要是使用并显示了这个控件,然后拖动一下滚动条再DrawToBitmap就会画出个空白图片。
[/Quote]

以上代码测试过N多网站,没有出现不完整过.
加载更多回复(51)
这是视觉中国官方(shijue.me)提供的扩展,可以让你浏览网站时方便分享或收藏喜欢的图片,扩展提供了鼠标右键单击分享网页截图到视觉中国(shijue.me)上的快捷功能。 视觉中国图片分享工具 这是视觉中国官方(shijue.me)提供的扩展,可以让你浏览网站时方便分享或收藏喜欢的图片,扩展提供了鼠标右键单击分享网页截图到视觉中国(shijue.me)上的快捷功能。 “shijue.me 视觉中国”是中国最具活力的视觉图片分享社区及创意设计产品社会化电商平台。依托独特的创意生态理论,为原创者和消费者提供一个互动沟通的社区,发现原创、发现美丽,收获并分享美好的创意体验。 秉承了优质的创意资源和纯正的社区血脉,全新的“shijue.me 视觉中国”愿意和您一起,用创意和想象力,重新发现一个美丽的新世界! 这里是一个关于灵感和创意的好玩的全栖互动社区,你可以在里: 分享好看的图片找到品味同好、发表原创的作品获得更多成名的机会、编辑精彩的内容和大家分享你的奇闻乐事;上传你的奇思妙想,便可以在这里找到从前期到最终、从灵感到最终的盈利的所有通经,我们帮你将它变成商品,并通过为你铺设好的渠道实现盈利;你可以买到充满创意的原创产品,并可以和它的设计师进行互动;你还可以在这里找到很多趣味相投的朋友,组合线下聚会活动;这里更是一个显现企业和品牌形象的地方。总之只要是和视觉、创意有关的想法,都可以在这里找到归属! == cvshare - 1.0.5 released 2012/11/04 - 修复标签分享,重复的bug. == cvshare - 1.0.4 released 2012/10/22 - 修复截图分享,URL编码bug - 新增截图分享后,查看按钮功能 == cvshare - 1.0.0 released 2012/10/20 - 鼠标右键分享功能 - 网页标签分享功能 - 多(组)图分享功能 - 网页可视区域、区域选择、整个网页截图分享功能 支持语言:English,中文 (简体)

16,553

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧