`
sui366
  • 浏览: 32285 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

java截屏功能

    博客分类:
  • awt
阅读更多

 

 

 

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截屏功能工程

    Java截屏功能工程是一个利用Java编程语言实现的实用工具,主要功能是截取屏幕图像,并提供了自定义截图大小以及自动保存的功能。这个工程对于开发者来说,尤其在进行自动化测试、用户界面反馈或者其他需要屏幕捕获的...

    功能比较完善的JAVA截图程序

    在本项目中,Swing被用来创建截图窗口、菜单栏、工具栏等元素,使用户能够方便地操作截图功能。 **3. 图像处理** Java提供了一系列的类库用于处理图像,如`java.awt.image.BufferedImage`和`javax.imageio.ImageIO`...

    java实现截图功能

    java实现截图功能,类似qq的截图功能,欢迎下载

    JAVA截屏代码+单机软件

    Java截屏功能主要依赖于Java的Abstract Window Toolkit (AWT) 和 Swing 库。AWT提供了基本的图形和窗口组件,如`java.awt.Robot`类,可以用于创建屏幕截图。Swing则是在AWT之上构建的更高级的图形用户界面库,但在...

    JAVA简单实现截屏

    在Java编程语言中,实现截屏功能并不复杂,主要依赖于Java AWT(Abstract Window Toolkit)库中的Robot类。Robot类提供了模拟用户键盘和鼠标操作的功能,包括获取屏幕的像素数据,这正是我们进行截屏操作的核心。接...

    截屏源代码,用java编写的

    首先,要实现Java截屏功能,我们需要理解Java AWT(Abstract Window Toolkit)和Swing库。这两个库提供了创建和管理窗口、控件以及与操作系统交互的基础。在AWT中,`Robot`类是实现截屏的关键,它允许程序模拟用户的...

    java实现截屏源代码

    #### 一、Java截屏功能实现原理 在Java中,实现屏幕截图主要依赖于`java.awt.Robot`类,它提供了与底层操作系统交互的能力,能够模拟键盘和鼠标事件,同时也支持屏幕图像的捕获。通过`Robot`类的`...

    JAVA实现截屏功能 有界面 附源码

    在Java编程环境中,实现截屏功能并提供图形用户界面(GUI)是一项常见的需求,尤其对于开发者来说,能够方便地测试和展示应用效果。本项目名为"JAVA实现截屏功能 有界面 附源码",提供了这样的解决方案。下面将详细...

    java实现截图功能,类似QQ截图

    java实现截图功能,类似QQ截图,直接导入就可以使用,

    纯Java实现整个网页截图项目源代码

    通过这个组件,项目能够加载网页并在Java环境中渲染,进而实现截图功能。 2. **网页渲染**: 在Java中,网页的渲染通常需要依赖外部库,因为标准的JavaFX或Swing并不支持HTML5的复杂渲染。DJNativeSwing的...

    JAVA3d截图功能的实现

    java实现截图的效果java实现截图的效果java实现截图的效果java实现截图的效果

    Java屏幕截屏源代码

    需要注意的是,由于跨平台的特性,Java截屏可能会受到不同操作系统和显示设置的影响。例如,在多显示器环境下,可能需要处理多个屏幕的截取问题。因此,在实际开发中,要确保在各种环境下测试代码的正确性。 总的来...

    java截屏代码

    通过这个`GuiCamera`类,你可以轻松地在Java应用中实现屏幕截图功能。只需实例化这个类,然后调用`snapShot`方法即可完成一次屏幕拍照,并将结果保存为文件。如果你需要截取特定的屏幕区域,可以修改`Rectangle`对象...

    Java实现网页截图技术

    尽管使用`Robot`类可以实现在Windows系统上的截图功能,但对于需要跨平台运行的应用而言,这种方法可能并不适用。为此,可以考虑使用Java Native Interface(JNI)来调用本地库,从而实现更广泛的兼容性。例如,文中...

    java截屏小助手(含源码)

    【标题】:“java截屏小助手(含源码)” 这个标题揭示了这是一个基于Java编程语言开发的截图工具,而且附带了源代码。这意味着用户不仅可以直接运行程序,还可以通过查看源码学习到如何在Java中实现截图功能,这...

    Java实现QQ屏幕截图功能.zip

    在Java编程环境中,实现QQ屏幕截图功能涉及到多个技术点,包括图形用户界面(GUI)的创建、屏幕捕获、图像处理以及文件保存等。下面将详细解释这些知识点。 1. **Java AWT/Swing库**: Java提供了AWT(Abstract Window...

    java截图小工具

    Java截图小工具是一种基于Java编程语言实现的程序,它能够帮助用户捕获并保存计算机屏幕上的图像。在本文中,我们将深入探讨如何使用Java来创建一个简单的截图工具,包括涉及的关键类、方法以及实现过程。 首先,...

    JAVA截图小工具

    JAVA截图小工具是一款基于Java编程语言开发的实用应用程序,它为用户提供了方便快捷的屏幕截图功能。通过这款工具,用户能够轻松捕获屏幕上的任何区域,并将其保存到本地,同时自动复制到剪贴板,方便进行后续的粘贴...

    JAVA截图技术

    本文详细介绍了如何使用Java实现截图功能,包括了屏幕截图、选择截图区域、绘制辅助框、保存截图以及复制截图到剪贴板等关键技术点。通过这些技术点的学习,开发者可以轻松地将截图功能集成到自己的应用程序中,提升...

Global site tag (gtag.js) - Google Analytics