`
IsItLikeThat
  • 浏览: 41425 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Screenshot

 
阅读更多

 

Java截屏

package com.screenshot;

import java.awt.AWTException;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
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.event.MouseMotionAdapter;
import java.awt.image.BufferedImage;
import java.awt.image.RescaleOp;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.filechooser.FileSystemView;

public class SnapshotTest { 
    public static void main(String[] args) { 
        // 全屏运行        
    	RectD rd = new RectD(); 
        GraphicsDevice gd = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice(); 
        gd.setFullScreenWindow(rd); 
    } 
} 
 class RectD extends JFrame { 
    private static final long serialVersionUID = 1L; 
    int orgx, orgy, endx, endy; 
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); 
    BufferedImage image; 
    BufferedImage tempImage; 
    BufferedImage saveImage; 
    Graphics g; 
  
    @Override
    public void paint(Graphics g) { 
        RescaleOp ro = new RescaleOp(0.8f, 0, null); 
        tempImage = ro.filter(image, null); 
        g.drawImage(tempImage, 0, 0, this); 
    } 
  
    public RectD() { 
        snapshot(); 
        setVisible(true); 
        // setSize(d);//最大化窗口        
        setDefaultCloseOperation(EXIT_ON_CLOSE); 
        this.addMouseListener(new MouseAdapter() { 
            public void mousePressed(MouseEvent e) { 
                orgx = e.getX(); 
                orgy = e.getY(); 
            } 
        }); 
        this.addMouseMotionListener(new MouseMotionAdapter() { 
            public void mouseDragged(MouseEvent e) { 
                endx = e.getX(); 
                endy = e.getY(); 
                g = getGraphics(); 
                g.drawImage(tempImage, 0, 0, RectD.this); 
                int x = Math.min(orgx, endx); 
                int y = Math.min(orgy, endy); 
                int width = Math.abs(endx - orgx)+1; 
                int height = Math.abs(endy - orgy)+1; 
                // 加上1,防止width或height为0                 
                g.setColor(Color.BLUE); 
                g.drawRect(x-1, y-1, width+1, height+1); 
                //减1,加1都是为了防止图片将矩形框覆盖掉                 
                saveImage = image.getSubimage(x, y, width, height); 
                g.drawImage(saveImage, x, y, RectD.this); 
            } 
        }); 
        this.addKeyListener(new KeyAdapter() { 
            @Override
            public void keyReleased(KeyEvent e) { 
                // 按Esc键退出                
            	if (e.getKeyCode() == 27) { 
                    saveToFile(); 
                    System.exit(0); 
                } 
            } 
        }); 
    } 
  
    public void saveToFile() { 
        SimpleDateFormat sdf = new SimpleDateFormat("yyyymmddHHmmss"); 
        String name = sdf.format(new Date()); 
        File path = FileSystemView.getFileSystemView().getHomeDirectory(); 
        String format = "jpg"; 
        String finalPath = path + File.separator + name + "." + format;
        System.out.println(finalPath);
        File f = new File(finalPath); 
        try { 
            ImageIO.write(saveImage, format, f); 
        } catch (IOException e) { 
            e.printStackTrace(); 
        } 
    } 
  
    public void snapshot() { 
        try { 
            Robot robot = new Robot(); 
            Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); 
            image = robot.createScreenCapture(new Rectangle(0, 0, d.width, 
                    d.height)); 
        } catch (AWTException e) { 
            e.printStackTrace(); 
        } 
    } 
}

 

Servlet里返回图像到Response

package com;

import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class ScreenServlet
 */
public class ScreenServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doPost(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		try {
			BufferedImage image = null;
			Robot robot = new Robot();
			Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
			image = robot.createScreenCapture(new Rectangle(0, 0, d.width, d.height));

			String format = "jpg";
			ImageIO.write(image, format, response.getOutputStream());
			
		} catch (Exception e) {
			e.printStackTrace();
		}

	}

}

 

 

分享到:
评论

相关推荐

    ScreenShot

    本文将深入探讨“ScreenShot”这个程序,它允许开发者或用户捕获当前View的屏幕快照并保存到设备的特定目录中。 首先,让我们了解“ScreenShot”程序的核心功能。它修改了原始的截屏程序,使其能够运行并执行以下...

    screenshot_v3.03源码

    标题 "screenshot_v3.03源码" 暗示了我们正在处理一个与屏幕截图工具相关的项目,其版本为3.03,并且包含了该软件的源代码。源代码是程序的基础,由程序员编写的原始语言文本,用于创建、理解和修改软件。通过分析源...

    Screenshot-JS屏幕截图插件脚本

    《Screenshot-JS:Web前端屏幕截图插件的深入解析》 在现代Web开发中,用户交互体验日益丰富,其中一项有趣的特性就是允许用户在浏览器中直接截取屏幕快照。"Screenshot-JS"是一个强大的JavaScript插件,专为Web...

    cordova-screenshot cordova截屏插件

    cordova-screenshot cordova截屏插件 document.addEventListener("deviceready", init, false); function init() { document.querySelector("#share").addEventListener("touchend", function() { navigator....

    Unity屏幕截图插件Screenshot Creator 1.4.5.3

    "Screenshot Creator 1.4.5.3"是专为Unity设计的一款屏幕截图插件,它提供了一种便捷的方式来捕捉和管理游戏的高清截图。 首先,让我们深入了解一下Unity的屏幕截图功能。在Unity的基础版中,开发者可以通过编写C#...

    网页截图 - Screenshot Extension谷歌插件

    网页截图 - Screenshot Extension 超级好用的谷歌截图工具,可以截取滚动屏幕

    Screenshot_20231214_141313.jpg

    Screenshot_20231214_141313.jpg

    Ultimate Screenshot Creator 1.4.3.unitypackage

    Ultimate Screenshot Creator 1.4.3.unitypackage 支持多个Camera 截图在同一张图 并且保存

    7DTD-fpsHUD-master_FPS_screenshot_

    而"7DTD-fpsHUD-master_FPS_screenshot_"这个项目则专注于为7 Days to Die(7DTD)这款游戏提供一个FPS显示及截图功能的插件。通过分析这个项目的源代码,我们可以深入理解如何在游戏环境中实时显示FPS信息并实现...

    Screenshot_20220421_141033.jpg

    Screenshot_20220421_141033.jpg

    Screenshoter(小巧实用截图软件)绿色版

    **Screenshoter(小巧实用截图软件)绿色版** Screenshoter是一款专为用户提供便捷截图功能的工具,尤其适合那些希望快速、高效地捕捉屏幕图像的用户。它以绿色版的形式出现,这意味着该软件无需安装,下载后直接解压...

    ScreenShot.zip项目安卓应用源码下载

    ScreenShot.zip项目是一个针对安卓平台的应用源码,它包含了实现屏幕截图功能的完整代码结构,非常适合不同层次的学习者和开发者进行研究与参考。这个项目不仅可以帮助学生进行毕业设计,也适用于个人提升技能,同时...

    unity截屏插件Gallery Screenshot

    "Gallery Screenshot"是一款专为Unity设计的插件,旨在帮助开发者轻松实现游戏内截屏功能,并且允许用户自定义截图的相机视角和显示的模型,为游戏开发过程中的调试、展示或玩家分享提供了便利。 在Unity中,屏幕...

    截图软件screenshot v7.0

    《全面解析截图软件screenshot v7.0:开启高效截取与管理新篇章》 在数字化信息日益丰富的今天,截图工具已经成为了我们日常工作中不可或缺的一部分。无论是为了分享信息、记录屏幕内容,还是为了教学演示,一个...

    screenshot-tests-for-android.zip

    screenshot-tests-for-android 是来自 Facebook 的一个 Android 开发包,用于在 Android 程序中实现自动的屏幕截屏功能。示例代码:public class MyTests {  @Test  public void doScreenshot() {  /* ...

    Greenshot - a free screenshot tool optimized for productivity

    Want to create or send a screenshot? Get Greenshot! It’s a Windows screenshot utility that makes capturing and sending screenshots easy. It allows to capture either the entire screen, a region or a ...

    screenshot.7z android C语言读取fb0实现截屏,并保存为rgb565的bmp

    /cygdrive/e/myprj/screenshot/jni adb push ../libs/armeabi/save /data/local adb shell cd /data/local chmod 777 save ./save 截屏保存到/mnt/sdcard/s.bmp │ BMP格式.html │ screenshot.dsp │ screenshot....

    ios-Screenshot 应用商店截图制作工具.zip

    如果你看不懂这个App是做什么的,说明你还不是一名合格的App开发人员。 美工妹子制作大量应用商店截图模板,然后标注好主标题、副标题、截图坐标、截图尺寸、附件坐标等参数...AppStore搜索:screenshot 也能下载。

Global site tag (gtag.js) - Google Analytics