`

实用版JAVA 屏幕截图工具

阅读更多
截图工具
---------------------

整理网上代码而完成.
分享到:
评论
3 楼 amos_tl 2011-06-12  
CapturerHelper.java
package cn.bisoft.java.api.facade.capturer;

import java.awt.BorderLayout;
import java.awt.Cursor;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.OutputStream;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JDialog;
import javax.swing.JPanel;

public class CapturerHelper
{
  private static CapturerHelper CPAUTERHELPER = new CapturerHelper();
  private int x1;
  private int y1;
  private int x2;
  private int y2;
  private int recX;
  private int recY;
  private int recH;
  private int recW;
  private boolean isFirstPoint;
  private BackgroundImage labFullScreenImage;
  private Robot robot;
  private BufferedImage fullScreenImage;
  private BufferedImage pickedImage;
  private String defaultImageFormater;
  private JDialog dialog;

  public static void main(String[] args)
    throws Exception
  {
    String userDir = System.getProperty("user.home");

    File tempFile = new File(userDir + "\\桌面\\" + DateHelper.format("dd-HH-mm-ss") + ".jpg");

    CapturerHelper capturer = getInstance();

    capturer.captureImage();

    capturer.saveAsJPEG(tempFile);

    ClipboardHelper.setImage(capturer.getPickedImage());

    System.exit(0);
  }

  private CapturerHelper()
  {
    this.isFirstPoint = true;

    this.labFullScreenImage = new BackgroundImage();

    this.defaultImageFormater = "png";

    this.dialog = new JDialog();
    try
    {
      this.robot = new Robot();
    }
    catch (Exception e)
    {
      e.printStackTrace();
    }

    JPanel cp = (JPanel)this.dialog.getContentPane();
    cp.setLayout(new BorderLayout());

    this.labFullScreenImage.addMouseListener(new MouseAdapter(this)
    {
      public void mouseReleased()
      {
        CapturerHelper.access$0(this.this$0, true);
        CapturerHelper.access$6(this.this$0, CapturerHelper.access$1(this.this$0).getSubimage(CapturerHelper.access$2(this.this$0), CapturerHelper.access$3(this.this$0), CapturerHelper.access$4(this.this$0), CapturerHelper.access$5(this.this$0)));

        CapturerHelper.access$7(this.this$0).setVisible(false);
      }

    });
    this.labFullScreenImage.addMouseMotionListener(new MouseMotionAdapter(this)
    {
      public void mouseDragged()
      {
        if (CapturerHelper.access$8(this.this$0))
        {
          CapturerHelper.access$9(this.this$0, evn.getX());
          CapturerHelper.access$10(this.this$0, evn.getY());
          CapturerHelper.access$0(this.this$0, false);
        }
        else
        {
          CapturerHelper.access$11(this.this$0, evn.getX());
          CapturerHelper.access$12(this.this$0, evn.getY());
          int maxX = Math.max(CapturerHelper.access$13(this.this$0), CapturerHelper.access$14(this.this$0));
          int maxY = Math.max(CapturerHelper.access$15(this.this$0), CapturerHelper.access$16(this.this$0));
          int minX = Math.min(CapturerHelper.access$13(this.this$0), CapturerHelper.access$14(this.this$0));
          int minY = Math.min(CapturerHelper.access$15(this.this$0), CapturerHelper.access$16(this.this$0));
          CapturerHelper.access$17(this.this$0, minX);
          CapturerHelper.access$18(this.this$0, minY);
          CapturerHelper.access$19(this.this$0, maxX - minX);
          CapturerHelper.access$20(this.this$0, maxY - minY);
          CapturerHelper.access$21(this.this$0).drawRectangle(CapturerHelper.access$2(this.this$0), CapturerHelper.access$3(this.this$0), CapturerHelper.access$4(this.this$0), CapturerHelper.access$5(this.this$0));
        }
      }

      public void mouseMoved()
      {
        CapturerHelper.access$21(this.this$0).drawCross(e.getX(), e.getY());
      }

    });
    cp.add("Center", this.labFullScreenImage);
    this.dialog.setCursor(Cursor.getPredefinedCursor(1));
    this.dialog.setAlwaysOnTop(true);
    this.dialog.setMaximumSize(Toolkit.getDefaultToolkit().getScreenSize());
    this.dialog.setUndecorated(true);
    this.dialog.setSize(this.dialog.getMaximumSize());
    this.dialog.setModal(true);
  }

  public static CapturerHelper getInstance()
  {
    return CPAUTERHELPER;
  }

  public void captureImage()
  {
    this.fullScreenImage = this.robot.createScreenCapture(new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()));
    ImageIcon icon = new ImageIcon(this.fullScreenImage);
    this.labFullScreenImage.setIcon(icon);

    this.dialog.setVisible(true);
  }

  public BufferedImage getPickedImage()
  {
    return this.pickedImage;
  }

  public ImageIcon getPickedIcon()
  {
    return new ImageIcon(getPickedImage());
  }

  public void saveAsPNG(File file)
    throws Exception
  {
    ImageIO.write(getPickedImage(), "png", file);
  }

  public void saveAsJPEG(File file)
    throws Exception
  {
    ImageIO.write(getPickedImage(), "JPEG", file);
  }

  public void write(OutputStream out)
    throws Exception
  {
    ImageIO.write(getPickedImage(), this.defaultImageFormater, out);
  }
}
2 楼 amos_tl 2011-06-12  
CapturerHelper.class

 public static void main(String[] args)
    throws Exception
  {
    String userDir = System.getProperty("user.home");

    File tempFile = new File(userDir + "\\桌面\\" + DateHelper.format("dd-HH-mm-ss") + ".jpg");

    CapturerHelper capturer = getInstance();

    capturer.captureImage();

    capturer.saveAsJPEG(tempFile);

    ClipboardHelper.setImage(capturer.getPickedImage());

    System.exit(0);
  }



可能你的桌面的名字不是"桌面".你可以编译下CapturerHelper这个类,来指定其它目录.
1 楼 wanggod 2011-06-12  
怎么指定保存路径,默认放在桌面上报了FileNotFoundException

相关推荐

    基于Java的QQ屏幕截图工具的设计与实现.zip

    在本项目中,"基于Java的QQ屏幕截图工具的设计与实现"是一个实用的软件开发案例,它展示了如何利用Java编程语言来创建一个功能类似于QQ的屏幕截图应用。这个项目不仅适用于学习Java编程的新手,也适合那些正在寻找...

    一个java版的屏幕截取工具

    Java屏幕截取工具是一款完全由Java编程语言编写的实用程序,它允许用户捕获和处理他们的计算机屏幕。这款工具的核心功能包括屏幕截图以及将截图保存或复制到写字板上,方便进一步编辑和分享。在深入探讨这个工具的...

    Java屏幕截屏工具

    Java屏幕截屏工具是利用Java编程语言开发的一款实用程序,主要功能是在用户的计算机屏幕上选取特定区域并进行截图。这个工具是在Eclipse 4.2.1集成开发环境中编写的,这是Java开发者常用的一个IDE,提供了丰富的代码...

    抓屏幕工具长截图专用

    标题中的“抓屏幕工具长截图专用”表明这是一个专注于捕捉屏幕并支持长截图功能的软件。在信息技术领域,屏幕截图工具是日常工作中非常实用的辅助工具,尤其对于文档编写、问题报告、教学演示等场景,能够方便地记录...

    ScreenShotTool:用Java编写的屏幕截图工具

    《ScreenShotTool:基于Java实现的屏幕截图工具详解》 在信息技术领域,屏幕截图工具是日常工作中不可或缺的辅助软件,它们能快速捕获并保存屏幕上的图像信息。本篇文章将深入探讨一个名为"ScreenShotTool"的开源...

    QQ截图单机版 截图工具 屏幕截图软件 绿色免安装

    QQ截图单机版是一款独立的屏幕截图工具,它与腾讯QQ内置的截图功能相同,无需安装,便于用户随时随地进行快捷的屏幕捕捉。这款绿色软件在功能上提供了丰富的截图选择,帮助用户高效地完成屏幕图像的抓取和编辑,是...

    s40 5.0版JAVA手机实用工具

    【s40 5.0版JAVA手机实用工具】是一系列专为诺基亚S40第五版手机设计的应用程序,这些工具旨在提高用户在移动设备上的操作效率和便利性。JAVA(Java ME)是一种跨平台的编程语言,广泛应用于移动设备,尤其是非智能...

    Java版 桌面画图工具

    综上所述,这款Java版桌面画图工具充分利用了Java的跨平台能力和丰富的API,实现了便捷的截图、绘图、标记及保存等功能,为用户提供了一个高效、直观的桌面编辑环境。对于开发者而言,它是Java图形编程的一个良好...

    代码截图工具 ( Java Swing )

    【代码截图工具 ( Java Swing )】是一款专为Java开发者设计的实用工具,它结合了代码高亮和截图功能,使得在论坛或者文档中分享代码变得更加便捷。这款工具使用了Java Swing作为图形用户界面(GUI)的开发框架,提供...

    屏幕截图并保存jpg

    屏幕截图并保存为jpg是一种常见的计算机操作,尤其在软件演示、教学材料制作或者问题记录时非常实用。在本文中,我们将深入探讨如何实现这一功能,包括使用编程语言自动化这一过程,以及可选的第三方工具。 首先,...

    java写的获得屏幕rgb值的小工具|得到屏幕rgb.zip

    总结起来,这个小工具结合了Java的图像处理能力、GUI编程、JNI技术以及第三方库的集成,提供了一种实用的方式来实时查看和控制屏幕RGB值。学习和理解这个工具的实现,对于提升Java编程技能,尤其是与操作系统交互和...

    屏幕取色工具(java)

    屏幕取色工具是一款实用的软件应用,主要用于帮助用户从屏幕上精确选取颜色,并提供相应的色彩代码,以便在设计、编程或日常使用中复制和使用这些颜色。在这个特定的案例中,我们讨论的是一个基于Java编写的屏幕取色...

    资源专区-课程设计-编程作业-【数据库实战】-QQ屏幕截图工具的设计与实现

    【编程作业】-QQ屏幕截图工具的设计与实现 在计算机科学和信息技术领域,软件开发是一项核心技能,而设计和实现一款实用的工具是提升这项技能的重要途径。本资源专区内提供的"QQ屏幕截图工具的设计与实现"课程设计...

    CSS样式 JS特效 Java小工具 文学文档 Java插件 截图软件

    “截图软件”是用来捕获计算机屏幕图像的工具,用户可以通过截图软件快速记录屏幕上的内容,例如制作教程、分享问题或保存重要信息。截图软件通常有多种模式,如全屏截图、窗口截图、自定义区域截图等,有的还提供了...

    JAVA 窗体多屏幕显示的问题

    在探讨“JAVA窗体多屏幕显示的问题”时,我们深入分析了如何在Java环境中处理多显示器设置下的窗体展示问题,特别...未来,随着技术的发展,Java及其GUI框架将继续演进,为开发者提供更加丰富和强大的多屏幕支持工具。

    NoJava电子书制作工具 Beta1.5

    《NoJava电子书制作工具 Beta1.5》是一款专为解决手机阅读问题而设计的实用软件,它能够将TXT格式的文本文档转换成JPG或GIF图像文件,以便于那些无法直接下载或阅读电子书的手机用户进行浏览。这款工具的出现,极大...

    JavaEE源码QQ屏幕截图源码数据库sql文档

    JavaEE源码QQ屏幕截图工具不仅提供了一个实用的屏幕截图功能,而且对于学习JavaEE开发和数据库管理的开发者来说,也是一份宝贵的参考资料。通过研究其源代码和文档,开发者可以深入理解B/S架构下如何实现屏幕截图...

Global site tag (gtag.js) - Google Analytics