第一页
第二页
第三页
如果文件不存在或者你允许覆盖已经存在的文件,监听器就会将捕获的内容保存为一个选择的文件。为了完成这个任务,监听器使用Java的
ImageIO框架选择一个jpeg writer,指定文件作为writer的目标,设置writer的压缩品质为95%,然后把图像写入到文件中。
ImageWriter writer = null;
ImageOutputStream ios = null;
try
{
// Obtain a writer based on the jpeg format.
Iterator iter;
iter = ImageIO.getImageWritersByFormatName ("jpeg");
// Validate existence of writer.
if (!iter.hasNext ())
{
showError ("Unable to save image to jpeg file type.");
return;
}
// Extract writer.
writer = (ImageWriter) iter.next();
// Configure writer output destination.
ios = ImageIO.createImageOutputStream (file);
writer.setOutput (ios);
// Set jpeg compression quality to 95%.
ImageWriteParam iwp = writer.getDefaultWriteParam ();
iwp.setCompressionMode (ImageWriteParam.MODE_EXPLICIT);
iwp.setCompressionQuality (0.95f);
// Write the image.
writer.write (null,
new IIOImage ((BufferedImage)
ia.getImage (), null, null),
iwp);
}
catch (IOException e2)
{
showError (e2.getMessage ());
}
finally
{
try
{
// Cleanup.
if (ios != null)
{
ios.flush ();
ios.close ();
}
if (writer != null)
writer.dispose ();
}
catch (IOException e2)
{
}
}
让代码自己清理一直是一个不错的主意。我把ImageIO的清理代码放在了finally子句中,以至于无论是正常结束还是抛出异常,它都可以执行。
总结
Capture限制了捕获的内容只能在主屏幕设备内。你可能想增强Capture来捕获所有附加屏幕设备(或许是一个巨大的虚拟屏幕)的内容。增强之一,你需要包含下面的代码,它捕获所有屏幕的内容,将它和Capture.java已经存在的代码集成。
GraphicsEnvironment graphenv = GraphicsEnvironment.getLocalGraphicsEnvironment ();
GraphicsDevice [] screens = graphenv.getScreenDevices ();
BufferedImage [] captures = new BufferedImage [screens.length];
for (int i = 0; i < screens.length; i++)
{
DisplayMode mode = screens [i].getDisplayMode ();
Rectangle bounds = new Rectangle (0, 0, mode.getWidth (), mode.getHeight ());
captures [i] = new Robot (screens [i]).createScreenCapture (bounds);
}
把以上代码放到Capture菜单项的动作监听器内。然后先引入代码创建一个bigScreen要引用的足够大的
BufferedImage,它可以保存被captures数组引用的所有BufferedImage内容;接着引入代码把它们的绘制到
bigScreen中。Capture现在成为了多屏幕捕获器就好像是一个单屏幕捕获器。
关于作者
Jeff Friesen是一个自由软件开发者和教育家,特别是在C、C++和Java技术领域。
分享到:
相关推荐
主要使用的是java.util.Robot类来捕获屏幕,可以实现对屏幕一个矩形区域的捕获,通过这个类,我们也可以实现一个远程桌面控制的程序。
Java Robot对象实现服务器屏幕远程监视
Java中利用Robot实现模拟按键,按下和松开。
Java Robot对象实现服务器屏幕远程监视
java的robot类实现屏幕截图,java的robot类实现屏幕截图。
Servo robot 激光跟踪传感器是目前世界上最先进的跟踪传感器,可实现6-D跟踪,与kuka机器人有良好的接口。其详细性如下: Servo-Robot全文共3页,当前为第1页。 Servo-Robot全文共3页,当前为第1页。 Servo-Robot...
用java robot实现超简单爬虫
RobotFramework中实现PageObject模式的轻量级关键字库_Python_RobotFramework.zip
mongodb的可视化工具robot3t-1.1.1版本,在上传时,官网的robot3t版本是1.2,收费版,免费版的有bug亲测无法使用。1.1.1是robot3t最后一个免费可用的版本。
robot3T,mongoDB可视化管理工具!!!!官网下载速度太慢了。。你值得拥有
RobotFramework实现嵌套For循环 RobotFramework实现嵌套For循环 现在,RobotFramework已不再⽀持 :FOR \ 的写法。 ⼀般循环 FOR ${i} IN RANGE 10 Log ${i} END 当FOR循环内嵌套有另⼀个循环时,内层循环不可识别。 ...
一个深入的分步教程,用于使用来自robot_localization 的扩展卡尔曼滤波器节点实现传感器融合!这里解释了协方差和卡尔曼滤波器等基本概念! 本教程特别有用,因为还没有一个完整的端到端实现教程,用于使用 robots...
网络安全_基于C++开发的网络安全检测工具WebRobot实现
fanuc robot的开发介绍文档,类似于SDK,介绍文档里面描述了大概可以进行哪些数据的的取值
本篇文章是对Java中用Robot实现控制鼠标和键盘的方法进行了详细的分析介绍,需要的朋友参考下
mongodb的可视化工具robot3t-1.1.1版本,在上传时,官网的robot3t版本是1.2,收费版,免费版的有bug亲测无法使用。1.1.1是robot3t最后一个免费可用的版本。
mongDB链接工具, 免费链接MongoDB, 由于Studio 3T 是收费的, 使用使用这个是开源的, 目前 Robot 3T已经被Studio 3T 收编, 官网已经不提供Robot 3T 下载了 Robot 3T -1.4.4-windows-x86_64-e6ac9ec5
robot framework可以使用python3进行安装,详细安装方法请参考此文档。此文档从python3的基础安装开始,适合从未安装过的小白使用。
Java Robot Wars 实现了java编写的机器人大战,代码简洁,清晰易懂。
robotframework调⽤python类⽅法_(五)RobotFramework基 础。... *** Test Cases *** test case13 Comment 这是注释 #这也是注释 如果你熟悉 Python 编程语⾔,那么 Robot Framework ⼏乎没有实现