




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 狂飙政治课件第九课
- 2025年度全国网络安全知识竞赛试题库及答案(共三套)
- 农业无人机智能化水平提升对2025年农业资源合理配置的影响报告
- 调整工程方案的通知(3篇)
- 安全教育教官培训内容课件
- 牧场安全生产培训课件
- 四川省宜宾市2025年中考化学真题附真题答案
- 农业废弃物处理与碳捕获技术集成报告
- 农业品牌价值评价体系构建:2025年资金申请研究报告
- 粮食种业面试题库及答案
- 钻井钻前工程主要施工技术方案
- 土木工程力学(第三版)教案 27-静定平面刚架的内力
- 超星尔雅学习通《劳动通论(中国劳动关系学院)》2025章节测试附答案
- 网架防腐刷漆施工方案
- GSP基础知识培训课件
- GB/T 6433-2025饲料中粗脂肪的测定
- (完整版)《珠心算口诀表》
- 2025年湖北荆州石首市招考村“两委”后备干部100人历年高频重点提升(共500题)附带答案详解
- DBJ41-T 145-2015 三轴水泥土搅拌桩帷幕技术规程
- TSG07-2019锅炉安装工艺+焊接专用工艺卡+施工记录表
- 物业收费员的培训
评论
0/150
提交评论