import java.awt.AWTException;
import java.awt.Cursor;
import java.awt.Frame;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import org.jivesoftware.spark.ui.ImageSelectionPanel;
import org.jivesoftware.spark.util.SwingWorker;
public class test extends Frame{
private BufferedImage bufferedImage;
private ImageSelectionPanel selectionPanel;
private Robot robot;
public test(){
try {
robot = new Robot();
selectionPanel = new ImageSelectionPanel();
}
catch (AWTException e) {
e.printStackTrace();
}
}
public static void main(String args[]){
test t= new test();
t.sendScreenshot();
}
public void sendScreenshot() {
final SwingWorker worker = new SwingWorker() {
@Override
public Object construct() {
try {
Thread.sleep(1000);
Rectangle area = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
return robot.createScreenCapture(area);
}
catch (Throwable e) {
e.printStackTrace();
}
return null;
}
@Override
public void finished() {
bufferedImage = (BufferedImage)get();
if (bufferedImage == null) {
//error
return;
}
final Frame frame = new Frame();
frame.setCursor(new Cursor(Cursor.CROSSHAIR_CURSOR));
selectionPanel.setImage(bufferedImage);
selectionPanel.validate();
selectionPanel.addMouseListener(new MouseAdapter() {
@Override
public void mouseReleased(MouseEvent e) {
Rectangle clip = selectionPanel.getClip();
BufferedImage newImage = null;
try {
newImage = bufferedImage.getSubimage((int)clip.getX(), (int)clip.getY(), (int)clip.getWidth(), (int)clip.getHeight());
}
catch (Exception e1) {
// Nothing to do
}
if (newImage != null) {
sendImage(newImage);
bufferedImage = null;
selectionPanel.clear();
}
frame.dispose();
frame.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
selectionPanel.removeMouseListener(this);
}
});
frame.addKeyListener(new KeyAdapter() {
@Override
public void keyReleased(KeyEvent e) {
if (e.getKeyChar() == KeyEvent.VK_ESCAPE) {
frame.dispose();
frame.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
}
}
});
frame.setSize(bufferedImage.getWidth(null), bufferedImage.getHeight());
frame.add(selectionPanel);
frame.setUndecorated(true);
// Determine if full-screen mode is supported directly
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice gs = ge.getDefaultScreenDevice();
if (gs.isFullScreenSupported()) {
gs.setFullScreenWindow(frame);
}
else {
// Full-screen mode will be simulated
frame.setVisible(true);
}
}
};
worker.start();
}
public void sendImage(final BufferedImage image) {
File tmpDirectory = new File("d:", "/tempImages");
tmpDirectory.mkdirs();
String imageName = "image_test.png";
final File imageFile = new File(tmpDirectory, imageName);
SwingWorker writeImageThread = new SwingWorker() {
@Override
public Object construct() {
try {
// Write out file in separate thread.
ImageIO.write(image, "png", imageFile);
}
catch (IOException e) {
e.printStackTrace();
}
return true;
}
@Override
public void finished() {
//sendImage(imageFile);
}
};
writeImageThread.start();
}
}
分享到:
相关推荐
在Java编程中,实现截图功能是一项实用且常见的需求,它能够帮助用户捕获屏幕上的特定区域或整个屏幕,并保存为图像文件。这个功能通常应用于各种应用程序,如屏幕录制软件、远程协助工具或者教学演示软件等。在本篇...
Java截屏功能工程是一个利用Java编程语言实现的实用工具,主要功能是截取屏幕图像,并提供了自定义截图大小以及自动保存的功能。这个工程对于开发者来说,尤其在进行自动化测试、用户界面反馈或者其他需要屏幕捕获的...
在本项目中,Swing被用来创建截图窗口、菜单栏、工具栏等元素,使用户能够方便地操作截图功能。 **3. 图像处理** Java提供了一系列的类库用于处理图像,如`java.awt.image.BufferedImage`和`javax.imageio.ImageIO`...
java实现截图功能,类似qq的截图功能,欢迎下载
Java截屏功能主要依赖于Java的Abstract Window Toolkit (AWT) 和 Swing 库。AWT提供了基本的图形和窗口组件,如`java.awt.Robot`类,可以用于创建屏幕截图。Swing则是在AWT之上构建的更高级的图形用户界面库,但在...
在Java编程语言中,实现截屏功能并不复杂,主要依赖于Java AWT(Abstract Window Toolkit)库中的Robot类。Robot类提供了模拟用户键盘和鼠标操作的功能,包括获取屏幕的像素数据,这正是我们进行截屏操作的核心。接...
首先,要实现Java截屏功能,我们需要理解Java AWT(Abstract Window Toolkit)和Swing库。这两个库提供了创建和管理窗口、控件以及与操作系统交互的基础。在AWT中,`Robot`类是实现截屏的关键,它允许程序模拟用户的...
#### 一、Java截屏功能实现原理 在Java中,实现屏幕截图主要依赖于`java.awt.Robot`类,它提供了与底层操作系统交互的能力,能够模拟键盘和鼠标事件,同时也支持屏幕图像的捕获。通过`Robot`类的`...
在Java编程环境中,实现截屏功能并提供图形用户界面(GUI)是一项常见的需求,尤其对于开发者来说,能够方便地测试和展示应用效果。本项目名为"JAVA实现截屏功能 有界面 附源码",提供了这样的解决方案。下面将详细...
java实现截图功能,类似QQ截图,直接导入就可以使用,
通过这个组件,项目能够加载网页并在Java环境中渲染,进而实现截图功能。 2. **网页渲染**: 在Java中,网页的渲染通常需要依赖外部库,因为标准的JavaFX或Swing并不支持HTML5的复杂渲染。DJNativeSwing的...
java实现截图的效果java实现截图的效果java实现截图的效果java实现截图的效果
需要注意的是,由于跨平台的特性,Java截屏可能会受到不同操作系统和显示设置的影响。例如,在多显示器环境下,可能需要处理多个屏幕的截取问题。因此,在实际开发中,要确保在各种环境下测试代码的正确性。 总的来...
通过这个`GuiCamera`类,你可以轻松地在Java应用中实现屏幕截图功能。只需实例化这个类,然后调用`snapShot`方法即可完成一次屏幕拍照,并将结果保存为文件。如果你需要截取特定的屏幕区域,可以修改`Rectangle`对象...
尽管使用`Robot`类可以实现在Windows系统上的截图功能,但对于需要跨平台运行的应用而言,这种方法可能并不适用。为此,可以考虑使用Java Native Interface(JNI)来调用本地库,从而实现更广泛的兼容性。例如,文中...
【标题】:“java截屏小助手(含源码)” 这个标题揭示了这是一个基于Java编程语言开发的截图工具,而且附带了源代码。这意味着用户不仅可以直接运行程序,还可以通过查看源码学习到如何在Java中实现截图功能,这...
在Java编程环境中,实现QQ屏幕截图功能涉及到多个技术点,包括图形用户界面(GUI)的创建、屏幕捕获、图像处理以及文件保存等。下面将详细解释这些知识点。 1. **Java AWT/Swing库**: Java提供了AWT(Abstract Window...
Java截图小工具是一种基于Java编程语言实现的程序,它能够帮助用户捕获并保存计算机屏幕上的图像。在本文中,我们将深入探讨如何使用Java来创建一个简单的截图工具,包括涉及的关键类、方法以及实现过程。 首先,...
JAVA截图小工具是一款基于Java编程语言开发的实用应用程序,它为用户提供了方便快捷的屏幕截图功能。通过这款工具,用户能够轻松捕获屏幕上的任何区域,并将其保存到本地,同时自动复制到剪贴板,方便进行后续的粘贴...
本文详细介绍了如何使用Java实现截图功能,包括了屏幕截图、选择截图区域、绘制辅助框、保存截图以及复制截图到剪贴板等关键技术点。通过这些技术点的学习,开发者可以轻松地将截图功能集成到自己的应用程序中,提升...