




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
package com.qiu.util; import java.io.*; import .*; import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.awt.image.*; import javax.imageio.*; import java.io.*; /*Author Qiu_BaiChao *一个简单的屏幕抓图 * */ public class ScreenCapture /test main public static void main(String args) throws Exception String userdir = System.getProperty(user.dir); File tempFile = new File(d:,temp.png); ScreenCapture capture = ScreenCapture.getInstance(); capture.captureImage(); JFrame frame = new JFrame(); JPanel panel = new JPanel(); panel.setLayout(new BorderLayout(); JLabel imagebox = new JLabel(); panel.add(BorderLayout.CENTER,imagebox); imagebox.setIcon(capture.getPickedIcon(); capture.saveToFile(tempFile); capture.captureImage(); imagebox.setIcon(capture.getPickedIcon(); frame.setContentPane(panel); frame.setSize(400,300); frame.show(); System.out.println(Over); private ScreenCapture() try robot = new Robot(); catch(AWTException e) System.err.println(Internal Error: + e); e.printStackTrace(); JPanel cp = (JPanel)dialog.getContentPane(); cp.setLayout(new BorderLayout(); labFullScreenImage.addMouseListener(new MouseAdapter() public void mouseReleased(MouseEvent evn) isFirstPoint = true; pickedImage = fullScreenImage.getSubimage(recX,recY,recW,recH); dialog.setVisible(false); ); labFullScreenImage.addMouseMotionListener(new MouseMotionAdapter() public void mouseDragged(MouseEvent evn) if(isFirstPoint) x1 = evn.getX(); y1 = evn.getY(); isFirstPoint = false; else x2 = evn.getX(); y2 = evn.getY(); int maxX = Math.max(x1,x2); int maxY = Math.max(y1,y2); int minX = Math.min(x1,x2); int minY = Math.min(y1,y2); recX = minX; recY = minY; recW = maxX-minX; recH = maxY-minY; labFullScreenImage.drawRectangle(recX,recY,recW,recH); public void mouseMoved(MouseEvent e) labFullScreenImage.drawCross(e.getX(),e.getY(); ); cp.add(BorderLayout.CENTER,labFullScreenImage); dialog.setCursor(Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR); dialog.setAlwaysOnTop(true); dialog.setMaximumSize( Toolkit.getDefaultToolkit().getScreenSize(); dialog.setUndecorated(true); dialog.setSize(dialog.getMaximumSize(); dialog.setModal(true); /Singleton Pattern public static ScreenCapture getInstance() return defaultCapturer; /*捕获全屏慕*/ public Icon captureFullScreen() fullScreenImage = robot.createScreenCapture(new Rectangle( Toolkit.getDefaultToolkit().getScreenSize(); ImageIcon icon = new ImageIcon(fullScreenImage); return icon; /*捕获屏幕的一个矫形区域 */ public void captureImage() fullScreenImage = robot.createScreenCapture(new Rectangle( Toolkit.getDefaultToolkit().getScreenSize(); ImageIcon icon = new ImageIcon(fullScreenImage); labFullScreenImage.setIcon(icon); dialog.setVisible(true); /*得到捕获后的BufferedImage*/ public BufferedImage getPickedImage() return pickedImage; /*得到捕获后的Icon*/ public ImageIcon getPickedIcon() return new ImageIcon(getPickedImage(); /*储存为一个文档,为PNG格式 *deprecated *replaced by saveAsPNG(File file) */ Deprecated public void saveToFile(File file) throws IOException ImageIO.write(getPickedImage(),defaultImageFormater,file); /*储存为一个文档,为PNG格式*/ public void saveAsPNG(File file) throws IOException ImageIO.write(getPickedImage(),png,file); /*储存为一个JPEG格式图像文档*/ public void saveAsJPEG(File file) throws IOException ImageIO.write(getPickedImage(),JPEG,file); /*写入一个OutputStream*/ public void write(OutputStream out) throws IOException ImageIO.write(getPickedImage(),defaultImageFormater,out); /singleton design pattern private static ScreenCapture defaultCapturer = new ScreenCapture(); private int x1,y1,x2,y2; private int recX,recY,recH,recW; /截取的图像 private boolean isFirstPoint = true; private BackgroundImage labFullScreenImage = new BackgroundImage(); private Robot robot; private BufferedImage fullScreenImage; private BufferedImage pickedImage; private String defaultImageFormater = png; private JDialog dialog = new JDialog(); /*显示图片的Label*/ class BackgroundImage extends JLabel public void paintComponent(Graphics g) super.paintComponent(g); g.drawRect(x,y,w,h); String area = Integer.toString(w)+ * + Integer.toString(h); g.drawString(area,x+(int)w/2-15,y+(int)h/2); g.drawLine(lineX,0,lineX,getHeight(); g.drawLine(0,lineY,getWidth(),lineY
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 江苏省扬州市高邮市重点中学2024-2025学年初三下第二次月考试题含解析
- 家居色彩搭配培训课件
- 灭火器使用方法及注意事项培训
- 2025混凝土承包合同简易范本
- 2025紫菜软件ERP实施服务合同
- 2025年签订买卖合同需留意的法律问题
- 2025存量房居间买卖合同
- 2025国内域名转让合同范本
- 2025智能音箱采购合同
- 2025手游代理合同范文
- IT系统架构规划与设计手册
- 口腔门诊6S管理
- 沉浸式体验活动设计合同
- 档案档案管理基础知识试题及答案
- 2025四川九洲建筑工程有限责任公司招聘生产经理等岗位6人笔试参考题库附带答案详解
- 2025-2030中国金红石发展现状及未来趋势研究报告
- 结肠镜检查前后的护理
- 人工智能与人才测评融合-全面剖析
- 2025-2030中国慢性腰痛治疗行业市场现状供需分析及投资评估规划分析研究报告
- 演出经纪人与文化经济试题
- 2024年江苏淮安中考满分作文《这份考卷答的漂亮》2
评论
0/150
提交评论