当前位置: 代码迷 >> Java Web开发 >> 怎么用java实现web工程中整个屏幕的截图
  详细解决方案

怎么用java实现web工程中整个屏幕的截图

热度:419   发布时间:2016-04-16 21:47:20.0
如何用java实现web工程中整个屏幕的截图
请各位大侠看清问题,方便下面的讨论
1.java web工程
2.html页面中嵌入了swf文件
3.任何一个用户通过页面展示对swf文件的各种点击、输入、提交
4.用户操作完成后,可以对自己操作后页面的展示进行整个屏幕的截图。

我之前考虑过用selenium,但是研究很长时间后,发现selenium是可以对flex进行自动化操作,
但是不太符合我这个需求的要求,
因为这个需求是想监控到用户的操作后,整个屏幕进行截取
selenium可以模拟自动化操作,但是无法监控用户操作了哪些。


------解决思路----------------------
二种方式:

第一种
如果你想对用户的每个操作都要记录起来的话方便用户查看可以采用RTMP协议实时对SWF绘制Bitmap进行录像,缺点就是你不方便对用户具体的操作位置进行高亮显示,只是录制了纯粹的视频

第二种
在具体操作的地方进行自定义事件,针对需要记录的地方进行监听,每次用户点击某一个地方就绘制Bitmap并对点击位置进行高亮显示,然后再把图片存起来后最后进行合并;缺点就是太多的地方需要加上此事件-比较繁琐.
------解决思路----------------------
你这个问题其实核心就是客户端截屏了。。。web对客户端操只能使用插件实现了。。你可以把Robot 放在applet中,或者delphi,c++一类的写个插件,.net ms也可以。。
------解决思路----------------------
楼主试试这个WEB截屏控件:http://www.cnblogs.com/xproer/archive/2010/12/05/1896778.html
与FCKEditor2.x整合

与CKEditor3.x整合

与KindEditor3.x整合

与xhEditor1.x整合

与Discuz!X2整合-常用工具条

与Discuz!X2整合-高级工具条

与Discuz!X2整合-弹出截屏选择窗口


整合示例代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Web截屏控件标准版演示页面</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"/>
    <link type="text/css" rel="Stylesheet" href="ScreenCapture/ScreenCapture.css" />
    <script type="text/javascript" src="ScreenCapture/jquery-1.7.2.min.js"></script>
    <script type="text/javascript" src="ScreenCapture/ScreenCapture.js" charset="utf-8"></script>
</head>
<body>
<div id="ScreenCaptureMessage">
<div id="CaptureMessage">
<img alt="进度图标" src="ScreenCapture/SL_Uploading.gif" /><span>图片上传中...</span><span>10%</span>
</div>
<input id="BtnCapture" type="button" value="截取屏幕区域" />
<input id="BtnCapture2" type="button" value="截取整个屏幕" />
<input id="BtnCapture3" type="button" value="截取指定区域" />
<img id="ScreenImg" alt="截屏图片" style="display: none" />
</div>
<script type="text/javascript" language="javascript">
var scpMgr = new CaptureManager("CaptureMessage");
scpMgr.Config["PostUrl"] = "http://localhost:1830/asp.net/upload.aspx";

window.onload = function()
{
$("#BtnCapture").click(function() { scpMgr.Capture(); });
$("#BtnCapture2").click(function() { scpMgr.CaptureScreen(); });
$("#BtnCapture3").click(function() { scpMgr.CaptureRect(0,0,100,100); });
}
</script>
</body>
</html>

标准版cab安装包(x86)
标准版cab安装包(x64)
标准版exe安装包
专业版exe安装包
专业版cab安装包
开发文档
ASP.NET标准版示例
ASP.NET专业版示例
ASP.NET-FCKEditor2.x示例
ASP.NET-CKEditor3.x示例
ASP.NET-KindEditor3.x示例
ASP.NET-xhEditor3.x示例
JSP标准版示例
JSP专业版示例
JSP-FCKEditor2.x示例示例
JSP-CKEditor3.x示例
JSP-KindEditor3.x示例
PHP-标准版示例
PHP-专业版示例

------解决思路----------------------
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

二种方式:

第一种
如果你想对用户的每个操作都要记录起来的话方便用户查看可以采用RTMP协议实时对SWF绘制Bitmap进行录像,缺点就是你不方便对用户具体的操作位置进行高亮显示,只是录制了纯粹的视频

第二种
在具体操作的地方进行自定义事件,针对需要记录的地方进行监听,每次用户点击某一个地方就绘制Bitmap并对点击位置进行高亮显示,然后再把图片存起来后最后进行合并;缺点就是太多的地方需要加上此事件-比较繁琐.

第二种太繁琐,每个模块进行监听,这个不太现实。
第一种方法,能具体说一下在java中是怎么应用吗,能否再详细一些。


注意:纯JAVA无法实现,必须依赖ActionScript3来实现此方法.

第一种比第二种更加耗费性能,用户登陆后你就要采用心跳方式绘制BitMap来记录用户的一举一动,在绘制BitMap的时候你要把用户当前鼠标位置通过绘制红点进行记录,然后每张张的Bitmap通过AS内置的NetStream或纯粹的HTTPService上传图片.


不熟悉ActionScript3。。。。。


Chrome浏览器貌似有截屏API,你可以看看,如果采用Chrome,就要给使用的用户进行约束只准使用Chrome.
不过还是需要自己写一个Chrome的截屏插件应用与你的WEB网站进行交互。

你说的这种需求肯定要采用第三方的东西来实现,我个人建议采用Chrome这种方式,把浏览器给约束起来如果是系统管理软件的话。
  相关解决方案