`
daimojingdeyu
  • 浏览: 275134 次
  • 性别: Icon_minigender_1
  • 来自: 山东
社区版块
存档分类
最新评论

Java实现屏幕截取程序(区域内截屏)

阅读更多
JDK 1.3中增加了一个Robot的类,内置了一个屏幕截取的方法[createScreenCapture],所以说对整个屏幕取图是一件很简单的事情。这里讨论一下如何实现对于屏幕某一鼠标拖选区域的屏幕截取。

网上java截屏的代码,都是调用Robot类的方法实现整个屏幕截取的,半天也没有找到关于鼠标拖动时进行区域截屏的代码。想了一下,还是可以实现的。问题的关键是在没有Java程序显示的情况下如何实现对鼠标的监听。这个比较难呀,不太清楚怎么实现,不过想到一个比较笨的方法:先将屏幕整个抓图保存下来,然后将图像显示个一个JFrame上,在JFrame内实现对区域抓屏。

猜测其他的抓图类的程序在选择了抓图操作后,整个界面好像锁定一样,所有程序都不再处理鼠标事件,貌似也是用的这种原理:用自己的面板以全屏的方式显示,以便遮挡住所有程序,同时将抓屏操作前的屏幕以图片的形式显示在自己的面板上,然后就可以在自己的面板上对抓屏得到的图像进行截取了。

程序设计的思路:

1、 选择了抓屏操作后,由Robot类对当前的整个屏幕进行截取操作,保存图像

2、将图像显示到一个JFrame上,因为要显示整个屏幕,所以JFrame要去掉所有的装饰,也就是说JFrame不能有标题栏,大小要和屏幕尺寸一样。 去掉JFrame的装饰可用下面的代码实现JFrame对象.setUndecorated(true)

3、因为在JFrame上要即要画屏幕的图像,又要在鼠标拖动时画出选择区域,为方便,将图像和选择区域放到两个不同的面板上完成绘制操作。两个面板层次位置可由JFrame内置的JLayeredPane实现,将两个面板放到JLayeredPane的不同的层上。

4、计算选择区域位置需要简单关注一下,这个不难。

5、为了方便操作,将抓图程序运行后入到系统托盘中。 这个用到了SystemTray和TrayIcon两个类。

因操作系统托盘的类类为JDK 1.6新增的,所以本文的代码只能在JDK 1.6上运行

代码已经更新,可以到下面文章对应的链接中下载。
http://daimojingdeyu.iteye.com/admin/blogs/235539
  • 描述: 运行效果图
  • 大小: 12.2 KB
  • screensnap.zip (3.6 KB)
  • 描述: Java区域抓图源代码
  • 下载次数: 718
分享到:
评论
11 楼 daimojingdeyu 2009-07-18  
fwh3002 写道
请问web方式能实现远程桌面的控制吗?

这个不太容易呀
10 楼 fwh3002 2009-07-13  
请问web方式能实现远程桌面的控制吗?
9 楼 yuanke 2008-09-22  
谢了!!!!
8 楼 daimojingdeyu 2008-09-04  
to:robertpi  不知道是不是所有Linux都能用,只在Ubuntu的8.04上测试过,是可以的,不过从文档上来看是有些Linux系统不支持系统托盘的。不过不支持话,程序会提示~~~

最新的代码可以下面文章的链接中下载
http://daimojingdeyu.iteye.com/blog/235539
7 楼 daimojingdeyu 2008-09-04  
to:bearice 抓屏的话,不只要JFrame全屏,还要去掉窗口装饰,不然能看到窗口的标题栏。

to:JavaTestJava 在选择“抓屏”菜单后,就可以用鼠标进行拖动选择要抓区的区域了。
6 楼 robertpi 2008-09-04  
强,这个是不是能在Linux上用啊?
5 楼 JavaTestJava 2008-09-04  
资料不错,我先收藏一下,回家了再重新下一下.新注册的帐号憋的难受.

另外问一下.是直接通过mouse拉取选择的么?
4 楼 bearice 2008-09-01  
设置全屏请参考:
java.awt.GraphicsDevice.setFullScreenWindow
3 楼 daimojingdeyu 2008-09-01  
好厉害,支持一下。 
2 楼 daimojingdeyu 2008-08-31  
谢谢bearice,第1)个问题偶搞错,现在已经改过。
问题2)将JFrame设置成全屏,是不是和偶用的方式一样?通过setUndecorated(true) 调用实现。
1 楼 bearice 2008-08-31  
1)Robot这个类1.3就有了
2)可以把那个JFrame设成全屏的

相关推荐

    Java实现屏幕截取程序(区域内截屏)更新

    在这个特定的案例中,我们讨论的是一个Java实现的屏幕截取程序,允许用户进行区域内的截屏操作。这通常涉及到图形用户界面(GUI)的创建、事件监听以及图像处理等多个技术领域。 首先,我们需要理解如何在Java中...

    状态模式-实现屏幕截取程序

    屏幕截取程序是一个常见的工具,它允许用户捕获屏幕上的特定区域或整个屏幕,并可能包含诸如保存、编辑或分享截图等功能。 首先,我们需要定义一个“状态”接口或抽象类,这将规定所有可能的屏幕截图状态以及与这些...

    android 指定屏幕内区域截图

    在Android开发中,有时我们需要实现特定功能,例如只截取应用程序界面的一部分,而不是整个屏幕。这个功能在"指定屏幕内区域截图"中得以体现。在本文中,我们将深入探讨如何在Android中实现这一功能,包括如何选取...

    实现屏幕截图的小程序 java课程设计.doc

    【Java 实现屏幕截图小程序详解】 在 Java 编程中,实现屏幕截图功能涉及多个关键知识点,包括图形用户界面(GUI)、事件处理、图像处理以及文件操作。以下是对这些知识点的详细说明: 1. **图形用户界面(GUI)**...

    根据选择区域截屏,获取屏幕图像数据

    综合以上信息,这个项目实现了一个基于MFC的屏幕截图工具,用户可以通过自定义选择区域,然后将截取的屏幕图像保存到文件中。整个过程涉及到Windows API调用、MFC组件的使用、图像数据处理和文件操作等多个知识点。

    java截图小程序

    【Java截图小程序】是一款小巧而实用的工具,它利用Java编程语言实现,允许用户方便地进行屏幕截图并可能提供一些额外的功能,如保存、编辑或分享截图。在本篇文章中,我们将深入探讨Java中实现截图功能的核心技术...

    java截屏小程序

    Java截屏小程序是一种实用工具,它允许用户在Java环境中实现屏幕捕获功能。这个程序能够创建PNG、JPG和GIF三种格式的图像文件,满足了不同场景下的需求。源码的提供使得开发者可以直接查看和学习其内部实现,进一步...

    网页截图工具,采用 Java Applet 实现

    `Robot`类提供了`createScreenCapture(Rectangle area)`方法,可以用来截取指定区域的屏幕图像。对于网页截图,我们需要确定网页在屏幕上的位置和大小,这可能需要与JavaScript交互以获取浏览器渲染的页面尺寸。 ...

    Android 自定义区域截图实现

    3. 截取选区:使用`ViewGroup`的`onDraw()`方法,遍历子View,只处理在选定区域内的部分。在`onDraw()`中,我们可以使用`Canvas`对象的`save()`、`clipRect()`和`drawBitmap()`等方法截取并绘制选区内容。 三、...

    基于Java的qq屏幕截图工具系统设计与实现(项目报告+答辩PPT+源代码+部署视频).zip

    该项目是针对Java编程语言设计的一款QQ屏幕截图工具,旨在提供便捷的屏幕捕获功能,类似于QQ内置的截图工具。此工具系统集成了多种实用特性,包括选择截图区域、编辑截图、保存截图等,同时提供了详细的项目报告、...

    java实现区域内屏幕截图示例

    在Java中实现屏幕截图功能,通常会用到`java.awt`和`java.awt.image`这两个包中的类。以下是一个基于Java的区域截图程序的详细解释: 首先,我们创建一个主类`ScreenShotTest`,它包含了一个`main`方法,这是程序的...

    浏览器bat脚本截图,该bat脚本进行浏览器截图,截取整个网页

    "nircmd.exe" 文件是 NirCmd 工具的可执行程序,这是一个强大的命令行工具,能够执行许多Windows系统任务,其中包括屏幕截图。NirCmd 提供了灵活的参数设置,使得用户可以定制截图的各种选项,例如定时截取、选择...

    Java开发的屏幕截图工具BS(内含源码+指导视频+设计文档)-完整版

    本设计旨在实现一个基于Java的QQ截屏工具,该工具能够对屏幕进行随机截取、复制、保存以及添加文字等操作,为用户提供便捷的数据处理方式。 首先,该工具具备随机获取屏幕指定区域的功能。用户可以通过简单的操作,...

    JAVA HTML截图.rar

    在Java中,我们可以利用开源库如SWT(Standard Widget Toolkit)或Apache POI等来实现屏幕截图功能。SWT是Eclipse项目的一部分,它提供了与操作系统原生GUI组件交互的能力,使得Java程序可以创建更加美观且功能丰富...

    基于Java的QQ屏幕截图工具的设计与实现【尚学堂·百战程序员】.zip

    1. **全屏截图和区域截图**:支持全屏截图和自定义区域截图两种模式,用户可以根据需要选择截取整个屏幕或者指定区域。 2. **多种截图方式**:提供多种截图方式,包括快捷键触发、系统托盘图标点击和界面按钮点击等...

    毕业设计,屏幕截图工具,Java完整源代码,Swing设计开发实现,内含毕业论文的设计与实现、毕业答辩PPT以及项目辅导视频

    基于java的截屏工具的设计和实现能够实现对屏幕的随机截取,复制,保存以及添加文字等操作,便于用户对数据的处理。 (1)随机获取屏幕指定区域; (2)编辑(添加文字)截图; (3)存储截图;

    java 手机截屏

    在Java中实现手机截屏涉及到Android SDK或JavaFX等库的使用,具体步骤和知识点包括: 1. **Android SDK中的截屏功能**: - Android系统提供了丰富的API接口供开发者使用。在Java环境中,可以通过`Instrumentation`...

    java屏幕接图上传

    其次,**屏幕截图功能**在Java中可以通过Java AWT库中的`Robot`类来实现。`Robot`类允许开发者模拟键盘和鼠标操作,其中`createScreenCapture()`方法可以用来捕获整个屏幕或指定区域的图像。 接着,**图像处理**...

    基于JavaSwing QQ屏幕截图工具答辩PPT.ppt

    1. **随机截图**:用户根据提示选择指定屏幕区域,系统通过坐标选取截取区域。 2. **编辑功能**:利用`Graphics`类提供的绘图方法,如`drawLine()`、`fillRect()`等,实现在图片上添加图形和文字。 3. **存储功能**...

Global site tag (gtag.js) - Google Analytics