`
arison1983
  • 浏览: 28382 次
  • 性别: Icon_minigender_1
  • 来自: 新疆
最近访客 更多访客>>
社区版块
存档分类

Robot 实现屏幕抓图3

阅读更多

第一页   第二页   第三页



如果文件不存在或者你允许覆盖已经存在的文件,监听器就会将捕获的内容保存为一个选择的文件。为了完成这个任务,监听器使用Java的
ImageIO框架选择一个jpeg writer,指定文件作为writer的目标,设置writer的压缩品质为95%,然后把图像写入到文件中。

ImageWriter writer = null;

ImageOutputStream ios = null;

try

{

    // Obtain a writer based o­n 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中,要实现屏幕抓图的功能,主要依赖于`java.awt.Robot`类。该类提供了一系列方法来模拟键盘和鼠标操作,并允许开发人员捕获整个屏幕或屏幕的一部分。 ##### 1. `java.awt.Robot`类简介 `java.awt.Robot`是...

    一个简单的用JAVA实现的屏幕抓图(源代码)

    在Java中,实现屏幕抓图主要依赖于`java.awt.Robot`类,它提供了屏幕捕获的功能。通过创建`Robot`实例,可以获取整个屏幕或指定区域的图像。此功能广泛应用于自动化测试、屏幕录制工具和各种需要捕捉屏幕画面的应用...

    屏幕抓图程序

    在屏幕抓图中,我们需要利用`java.awt.Robot`类,它能够模拟用户的键盘和鼠标操作,包括捕获屏幕图像。以下是一个简单的屏幕抓图示例: ```java import java.awt.*; import java.io.*; public class Screenshot { ...

    java 屏幕抓图 源代码

    要实现屏幕抓图,首先需要创建一个Robot对象,然后调用其createScreenCapture()方法。这个方法需要一个Rectangle参数,定义了要捕获的屏幕区域的坐标和大小。如果不指定特定区域,将默认截取全屏图像。 3. **创建...

    JAVA屏幕抓图(源码)

    在Java编程语言中,实现屏幕抓图功能是一项常见的任务,特别是在开发桌面应用或者需要进行自动化测试时。这个项目提供了一段源码,模仿了QQ截图的功能,允许用户通过拖动鼠标来选择屏幕上的任何区域进行截图,并且...

    screen capture

    实现屏幕抓图的技术有多种,其中最基础的是操作系统内置的功能。例如,在Windows系统中,可以使用Print Screen (PrtScn) 键来全屏截图,或者使用Alt + PrtScn组合键来捕获当前活动窗口。截取的图像会被复制到剪贴板...

    抓图程序 JAVA版的教学PPT

    3. **AWT和Swing组件**:讲解如何使用Robot类进行屏幕截图,这是JAVA AWT包中用于控制用户输入和执行系统级任务的工具。 4. **事件处理**:了解如何监听用户操作,如点击按钮触发截图。 5. **图像处理**:探讨如何...

    红蜻蜓抓图

    Java的`java.awt.Robot`类可以用来模拟键盘和鼠标操作,实现屏幕截图的功能。 2. 图像编辑模块:用户可能需要对截图进行裁剪、添加注释等操作,这部分可以通过Java的图像处理库如Java AWT和Swing来实现。 3. 存储...

    根据url来获取页面的截图

    3. **使用Robot类截屏**:创建`java.awt.Robot`实例,它允许程序模拟用户的输入行为,包括截取屏幕。调用`Robot.createScreenCapture(Rectangle)`方法,传入屏幕的特定区域(比如整个屏幕或指定窗口)来获取截图。 ...

    获取鼠标在任意点的颜色.rar

    在IT领域,获取鼠标在任意点的颜色是一项常见的需求,尤其在图形用户界面(GUI)开发、屏幕抓图软件或颜色检测应用中。这个压缩包文件"获取鼠标在任意点的颜色.rar"很可能包含了一个程序或者代码示例,用于演示如何...

    ScreenShotForMac:用于截屏的Java程序我想触摸机器人类...

    在Java编程语言的广阔世界里,有一款名为"ScreenShotForMac"的工具,专门针对Mac用户设计,旨在提供便捷的屏幕抓图功能。本文将深入探讨这款程序的实现原理和应用价值。 首先,让我们了解一下Java编程语言。Java是...

    Loupe:拡大镜

    5. 屏幕捕获:Loupe可能使用`java.awt.Robot`类来捕获屏幕上的图像,这是Java提供的一种系统级别的屏幕抓图功能。 6. 图形绘制:在放大区域内,Loupe需要绘制放大的图像。这可能使用了`Graphics2D`类,它提供了丰富...

Global site tag (gtag.js) - Google Analytics