第一页
第二页
第三页
如果文件不存在或者你允许覆盖已经存在的文件,监听器就会将捕获的内容保存为一个选择的文件。为了完成这个任务,监听器使用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中,要实现屏幕抓图的功能,主要依赖于`java.awt.Robot`类。该类提供了一系列方法来模拟键盘和鼠标操作,并允许开发人员捕获整个屏幕或屏幕的一部分。 ##### 1. `java.awt.Robot`类简介 `java.awt.Robot`是...
在Java中,实现屏幕抓图主要依赖于`java.awt.Robot`类,它提供了屏幕捕获的功能。通过创建`Robot`实例,可以获取整个屏幕或指定区域的图像。此功能广泛应用于自动化测试、屏幕录制工具和各种需要捕捉屏幕画面的应用...
在屏幕抓图中,我们需要利用`java.awt.Robot`类,它能够模拟用户的键盘和鼠标操作,包括捕获屏幕图像。以下是一个简单的屏幕抓图示例: ```java import java.awt.*; import java.io.*; public class Screenshot { ...
要实现屏幕抓图,首先需要创建一个Robot对象,然后调用其createScreenCapture()方法。这个方法需要一个Rectangle参数,定义了要捕获的屏幕区域的坐标和大小。如果不指定特定区域,将默认截取全屏图像。 3. **创建...
在Java编程语言中,实现屏幕抓图功能是一项常见的任务,特别是在开发桌面应用或者需要进行自动化测试时。这个项目提供了一段源码,模仿了QQ截图的功能,允许用户通过拖动鼠标来选择屏幕上的任何区域进行截图,并且...
实现屏幕抓图的技术有多种,其中最基础的是操作系统内置的功能。例如,在Windows系统中,可以使用Print Screen (PrtScn) 键来全屏截图,或者使用Alt + PrtScn组合键来捕获当前活动窗口。截取的图像会被复制到剪贴板...
3. **AWT和Swing组件**:讲解如何使用Robot类进行屏幕截图,这是JAVA AWT包中用于控制用户输入和执行系统级任务的工具。 4. **事件处理**:了解如何监听用户操作,如点击按钮触发截图。 5. **图像处理**:探讨如何...
Java的`java.awt.Robot`类可以用来模拟键盘和鼠标操作,实现屏幕截图的功能。 2. 图像编辑模块:用户可能需要对截图进行裁剪、添加注释等操作,这部分可以通过Java的图像处理库如Java AWT和Swing来实现。 3. 存储...
3. **使用Robot类截屏**:创建`java.awt.Robot`实例,它允许程序模拟用户的输入行为,包括截取屏幕。调用`Robot.createScreenCapture(Rectangle)`方法,传入屏幕的特定区域(比如整个屏幕或指定窗口)来获取截图。 ...
在IT领域,获取鼠标在任意点的颜色是一项常见的需求,尤其在图形用户界面(GUI)开发、屏幕抓图软件或颜色检测应用中。这个压缩包文件"获取鼠标在任意点的颜色.rar"很可能包含了一个程序或者代码示例,用于演示如何...
在Java编程语言的广阔世界里,有一款名为"ScreenShotForMac"的工具,专门针对Mac用户设计,旨在提供便捷的屏幕抓图功能。本文将深入探讨这款程序的实现原理和应用价值。 首先,让我们了解一下Java编程语言。Java是...
5. 屏幕捕获:Loupe可能使用`java.awt.Robot`类来捕获屏幕上的图像,这是Java提供的一种系统级别的屏幕抓图功能。 6. 图形绘制:在放大区域内,Loupe需要绘制放大的图像。这可能使用了`Graphics2D`类,它提供了丰富...