原来WebSnapshot可以这么简单

http://www.khrona.com/products/awesomium/
http://awesomiumdotnet.codeplex.com/
http://chriscavanagh.wordpress.com/2009/08/25/a-real-wpf-webbrowser/
http://khrona.com/wiki/index.php?title=Awesomium/

一、    WebSnapshot分析
WebSnapshot实现方法大致有两种思路:

第一种 —— 最最简单SB的方式就是屏幕截图,这种方式有三个很大的缺点:

1.    由于是截屏,所以无法在后台完成,而且霸占了屏幕。

2.    无法一次性截取那些内容较长的网页,可能还需要另外再做图片拼接工作,不可避免还要去处理拼接缝的问题。

3.    程序不能知道网页什么时候全部加载完毕,截屏时机把握不住。
等等…OUT!

第二种 —— 程序内嵌浏览器组件,通过浏览器的Render回调在后台来完成抓图。这种方式看来比较靠谱,但是难点在于用什么浏览器组件比较好。在经过尝试之后遇到了以下几种问题:

1.    由于需要后台抓图,所以过程中最好不要出现浏览器本身的界面。经过尝试嵌入IE浏览器没能解决,IE隐藏就没有回调…没办法,project改成窗体把IE放在角落用吧。

2.    虽然需要强行显示浏览器界面,但Render事件有了,不错。可惜Render事件只是针对HTML的Render,JS、Flash等外围组件是否加载完毕的事件不能获得。

3.    很多网页抓图效果就是白屏,例如map.baidu.com这种全JS或全Flash的网页就无法抓图。是浏览器没开放接口?还是需要额外处理才可以拿到JS或Flash的内容?
困难重重,此刻nono出现!推荐了Awesomium顿时豁然开朗。

二、    Awesomium简介

Awesomium是一个开源项目,其内核是基于google的Chrome,就是谷歌浏览器内核。有了它就可以将浏览器在Winform,WPF,Flash甚至3D游戏中嵌入,应用范围可以很广,它的功能已经不仅仅是一个浏览器而已,而是一个可以提供网页服务的类库,诸如网页抓图功能等,我们还可以通过WPF或者Flash将网页显示得更加绚丽,具有较高的灵活度,为我们开发人员带来了方便。

三、    实现步骤

1.    创建WebView

webView = webCore.CreateWebView(Width, Height, false);

2.    加载FinishLoading事件(这个事件包括了JS、Flash等浏览器组件的LoadingFinish)

webView.FinishLoading += OnFinishLoading;

3.    加载网页地址

webView.LoadUrl(URL);

4.    定时更新查询WebView状态以触发FinishLoading事件

webCore.Update();

5.    抓图

webView.RenderToBitmap(Width,Height,system.Drawing.Imaging.PixelFormat.Format24bppRgb);

转载于:https://www.cnblogs.com/canmusic/archive/2012/10/09/2717456.html

Awesomium(一)-- WebSnapshot相关推荐

  1. awesomium -- 出色的Web浏览插件

    Awesonmium 是一个允许把网页嵌入到 3D 画面或游戏中的开源库. Awesomium 采用了目前业界速度最快的浏览器内核webkit和v8,其实是把Chrome内核嵌入到了里面.更加令人惊讶 ...

  2. awesomium --ExecuteJavascriptWithResult 执行异常

    js文件中有如下语句 <pre name="code" class="javascript">parsedObj.走地=$(tds[10]).fin ...

  3. markdownpad 2 pro版本(注册码)

    markdownpad 2 pro版本(注册码) 简介 markdown – 一种轻量级文本标记语言,当今程序员必备技能 markdownpad – windows平台下好用的markdown编辑器 ...

  4. MarkdownPad打开文档This view has crashed错误,内容不显示

    问题现象 安装MarkdownPad 2后,打开文档有如下错误,文档内容不能正常显示 问题原因 LivePreview is not working - it displays an error me ...

  5. guava中 graphs 六

    2019独角兽企业重金招聘Python工程师标准>>> guava中 graphs 六 介绍 guava的common.graph 是一个图类型结构的库,也就是实体和他们之间的关系的 ...

  6. [OSG]OSG的相关扩展

    参考:osg官网 http://www.osgchina.org/index.php?view=article&id=176 http://trac.openscenegraph.org/pr ...

  7. 收藏开发人员常去网站

    http://www.sencha.com/products/extjs/ extjs 官网 http://www.showframework.com/2012/06/extjs-4-getting- ...

  8. CEF:给客户端内嵌一个Chrome吧

    原文:http://yogurtcat.com/posts/cef/hello-cef.html 发表于: 2013-03-31 20:20   |  更多相关文章: browser CEF Chro ...

  9. win10系统使用MarkdownPad2无法渲染

    win10系统使用MarkdownPad2无法渲染 报错  this view has crashed! 问题在于html渲染出错 下载Awesomium 1.6.6 SDK  ,安装完成,重启Mar ...

  10. MarkdownPad安装以及绘制 UML 图

    要在本地编辑和查看markdown 文件,我选择了安装MarkdownPad 2. 从官网下载了MarkdownPad 2,安装后打开md文件,出现了This view has crashed的渲染错 ...

最新文章

  1. PHP TP5框架 安装运行 Warning: require(E:\phpstudy_pro\WWW\TP5\tp5\public/../thinkphp/base.php): failed to
  2. SSIS--FOR循环容器
  3. Winform中实现拖拽文件到ListView获取文件类型(附代码下载)
  4. 8086CPU写汇编的规则
  5. [PKUWC2018][loj2541]猎人杀
  6. 5分绩点转4分_U19男篮世界杯 | 郭昊文空砍23分4篮板5助攻 国青72-86负菲律宾
  7. 吴恩达机器学习作业5——偏差与方差
  8. 2层框架结构柱子间距_3分钟牢记框架结构要点
  9. ●洛谷P2606 [ZJOI2010]排列计数
  10. stm8s单片机2位数码管显示_STM8S103数字电压表头,增加四位显示,串口功能,附源码...
  11. java 复制网页文字_网页文字复制不了?你这样做,全网文字任你免费复制!快get!...
  12. 英语发音规则---K字母
  13. 中国20年互联网的发展史
  14. 在React项目中引入字体文件并使用
  15. Star Way To Heaven 二分 + 并查集 + Prime
  16. Mac系统关闭体统提示升级
  17. 送书 | 《Django项目开发实战》
  18. 计算机组装配置单3000左右,3000元左右电脑配置明细表清单
  19. Taro(React)实现具有滚动效果的倒数计时器
  20. 秀!学妹看见都惊呆的 Python 小项目!【界面应用项目及游戏开发】

热门文章

  1. 初识Lazarus和Free Pascal Compiler
  2. 位图(标量图)与矢量图区别
  3. 计算机一级操作题题库在线,全国计算机一级操作题「题库」
  4. Windows 10 运行、CMD 命令大全
  5. 苹果/安桌点歌系统代码
  6. html编码写出滚动字幕,HTML滚动字幕代码及参数详解_html/css_WEB-ITnose
  7. 算法资料:算法导论_原书第3版(中文)(PDF带书签)
  8. scrapy框架使用教程
  9. 因子分析以及SPSS实现
  10. 【软件相关】Multisim完整教程