<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    用java的Robot類來實現(xiàn)屏幕抓圖

    主要使用的是java.util.Robot類來捕獲屏幕,可以實現(xiàn)對屏幕一個矩形區(qū)域的捕獲,通過這個類,我們也可以實現(xiàn)一個遠程桌面控制的程序。

    package com.qiu.util;
    import java.io.*;
    import java.net.*;
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.awt.image.*;
    import javax.imageio.*;
    import java.io.*;
    /**@Author Qiu_BaiChao
    *一個簡單的屏幕抓圖
    如抓取http://www.bt285.cn/content.php?id=1196863 中的甜性澀愛的照片。
    *
    *
    */

    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;
    }

    /**捕捉屏幕的一個矯形區(qū)域
    */

    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);

    posted on 2009-02-12 18:33 wang9354 閱讀(2247) 評論(0)  編輯  收藏

    導航

    <2009年2月>
    25262728293031
    1234567
    891011121314
    15161718192021
    22232425262728
    1234567

    統(tǒng)計

    常用鏈接

    留言簿(2)

    隨筆檔案

    友情鏈接

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲综合男人的天堂色婷婷| 国产亚洲精午夜久久久久久| 亚洲手机中文字幕| 免费国产叼嘿视频大全网站| 亚洲av无码一区二区三区网站| 国产免费一区二区三区不卡| 亚洲日本在线看片| 69xx免费观看视频| 中国china体内裑精亚洲日本| 67194成是人免费无码| 亚洲妇女无套内射精| 国产一级一片免费播放i| 特黄aa级毛片免费视频播放| 亚洲午夜福利精品无码| 中国内地毛片免费高清| 亚洲国产精品第一区二区| 国产h肉在线视频免费观看| 亚洲区日韩精品中文字幕| 四虎永久免费地址在线观看| 一级毛片视频免费观看| 日韩亚洲人成在线综合日本| 69视频在线观看高清免费| 亚洲一区动漫卡通在线播放| 国产无遮挡又黄又爽免费视频| 一级做a爰片久久毛片免费陪| 国产精品久久久亚洲| 成熟女人牲交片免费观看视频| 国产亚洲精品美女久久久久| 国产亚洲精品xxx| 欧洲乱码伦视频免费| 日本高清免费中文在线看| 久久亚洲AV无码精品色午夜麻| A在线观看免费网站大全| 日日摸夜夜添夜夜免费视频| 久久91亚洲精品中文字幕| 成人免费在线观看网站| 巨胸喷奶水视频www免费视频| 亚洲日韩乱码久久久久久| 免费萌白酱国产一区二区| 免费av一区二区三区| 久久亚洲中文无码咪咪爱|