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”这个程序,它允许开发者或用户捕获当前View的屏幕快照并保存到设备的特定目录中。 首先,让我们了解“ScreenShot”程序的核心功能。它修改了原始的截屏程序,使其能够运行并执行以下...
标题 "screenshot_v3.03源码" 暗示了我们正在处理一个与屏幕截图工具相关的项目,其版本为3.03,并且包含了该软件的源代码。源代码是程序的基础,由程序员编写的原始语言文本,用于创建、理解和修改软件。通过分析源...
《Screenshot-JS:Web前端屏幕截图插件的深入解析》 在现代Web开发中,用户交互体验日益丰富,其中一项有趣的特性就是允许用户在浏览器中直接截取屏幕快照。"Screenshot-JS"是一个强大的JavaScript插件,专为Web...
cordova-screenshot cordova截屏插件 document.addEventListener("deviceready", init, false); function init() { document.querySelector("#share").addEventListener("touchend", function() { navigator....
"Screenshot Creator 1.4.5.3"是专为Unity设计的一款屏幕截图插件,它提供了一种便捷的方式来捕捉和管理游戏的高清截图。 首先,让我们深入了解一下Unity的屏幕截图功能。在Unity的基础版中,开发者可以通过编写C#...
网页截图 - Screenshot Extension 超级好用的谷歌截图工具,可以截取滚动屏幕
Screenshot_20231214_141313.jpg
Ultimate Screenshot Creator 1.4.3.unitypackage 支持多个Camera 截图在同一张图 并且保存
而"7DTD-fpsHUD-master_FPS_screenshot_"这个项目则专注于为7 Days to Die(7DTD)这款游戏提供一个FPS显示及截图功能的插件。通过分析这个项目的源代码,我们可以深入理解如何在游戏环境中实时显示FPS信息并实现...
Screenshot_20220421_141033.jpg
**Screenshoter(小巧实用截图软件)绿色版** Screenshoter是一款专为用户提供便捷截图功能的工具,尤其适合那些希望快速、高效地捕捉屏幕图像的用户。它以绿色版的形式出现,这意味着该软件无需安装,下载后直接解压...
ScreenShot.zip项目是一个针对安卓平台的应用源码,它包含了实现屏幕截图功能的完整代码结构,非常适合不同层次的学习者和开发者进行研究与参考。这个项目不仅可以帮助学生进行毕业设计,也适用于个人提升技能,同时...
"Gallery Screenshot"是一款专为Unity设计的插件,旨在帮助开发者轻松实现游戏内截屏功能,并且允许用户自定义截图的相机视角和显示的模型,为游戏开发过程中的调试、展示或玩家分享提供了便利。 在Unity中,屏幕...
《全面解析截图软件screenshot v7.0:开启高效截取与管理新篇章》 在数字化信息日益丰富的今天,截图工具已经成为了我们日常工作中不可或缺的一部分。无论是为了分享信息、记录屏幕内容,还是为了教学演示,一个...
screenshot-tests-for-android 是来自 Facebook 的一个 Android 开发包,用于在 Android 程序中实现自动的屏幕截屏功能。示例代码:public class MyTests { @Test public void doScreenshot() { /* ...
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 ...
/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....
如果你看不懂这个App是做什么的,说明你还不是一名合格的App开发人员。 美工妹子制作大量应用商店截图模板,然后标注好主标题、副标题、截图坐标、截图尺寸、附件坐标等参数...AppStore搜索:screenshot 也能下载。