java零碎总结---java实现截图并保存到本地            

1.java实现截图并保存到本地
提供给大家三个方法,也是整理的,都不是很难,大家需要的看看哈
2.原理都相似
------------------------------------------------------------------
package com.credream.ocr;
import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
/*******************************************************************************
 * 该JavaBean可以直接在其他Java应用程序中调用,实现屏幕的"拍照" This JavaBean is

used to snapshot the
 * GUI in a Java application! You can embeded it in to your java application
 * source code, and us it to snapshot the right GUI of the application
 *
 * @see javax.ImageIO
 * @author liluqun ([email]liluqun@263.net[/email])
 * @version 1.0
 *
 ******************************************************************************/

public class GuiCamera {

private String fileName; // 文件的前缀

private String defaultName = "GuiCamera";

static int serialNum = 0;

private String imageFormat; // 图像文件的格式

private String defaultImageFormat = "jpg";

Dimension d = Toolkit.getDefaultToolkit().getScreenSize();

/***************************************************************************
     * 默认的文件前缀为GuiCamera,文件格式为PNG格式 The default construct

will use the default
     * Image file surname "GuiCamera", and default image format "png"

**************************************************************************/
    public GuiCamera() {
        fileName = defaultName;
        imageFormat = defaultImageFormat;

}

/***************************************************************************
     * @param s
     *            the surname of the snapshot file
     * @param format
     *            the format of the image file, it can be "jpg" or "png"
     *            本构造支持JPG和PNG文件的存储

**************************************************************************/
    public GuiCamera(String s, String format) {

fileName = s;
        imageFormat = format;
    }

/***************************************************************************
     * 对屏幕进行拍照 snapShot the Gui once

**************************************************************************/
    public void snapShot() {

try {
            // 拷贝屏幕到一个BufferedImage对象screenshot
            BufferedImage screenshot = (new Robot())
                    .createScreenCapture(new Rectangle(0, 0,
                            (int) d.getWidth(), (int)

d.getHeight()));
            serialNum++;
            // 根据文件前缀变量和文件格式变量,自动生成文件名
            String name = fileName + String.valueOf(serialNum) + "."
                    + imageFormat;
            File f = new File(name);
            System.out.print("Save File " + name);
            // 将screenshot对象写入图像文件
            ImageIO.write(screenshot, imageFormat, f);
            System.out.print("..Finished!\n");
        } catch (Exception ex) {
            System.out.println(ex);
        }
    }

public static void main(String[] args) {
        GuiCamera cam = new GuiCamera("d:\\qq", "bmp");//
        cam.snapShot();
    }
}
-----------------------------------------------------------------------------
第二种方法:
package com.credream.ocr;

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;

/**
 * java截屏
 * 运行后将当前屏幕截取,并最大化显示。
 * 拖拽鼠标,选择自己需要的部分。
 * 按Esc键保存图片到桌面,并退出程序。
 * 点击右上角(没有可见的按钮),退出程序,不保存图片。
 *
 * @author JinCeon
 */
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";
        File f = new File(path + File.separator + name + "." + format);
        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();
        }
    }
}
-------------------------------------------------------------
第三种方法:
package com.credream.robotExp;

import java.awt.AWTException;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class RobotExp {
public static void main(String[] args) {
try {
Robot robot = new Robot();
BufferedImage bi=robot.createScreenCapture(new Rectangle(900,800)); // 根据指定的

区域(1300,800)抓取屏幕的指定区域
ImageIO.write(bi, "jpg", new File("D:/imageTest.jpg")); //把抓取到的内容写入到一

个jpg文件中
} catch (AWTException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
----------------------------------------------------------------------
三种方法,大致相同,只不过加了些额外的方法,功能而已;都挺简单就不多说了...

java零碎总结---java实现截图并保存到本地相关推荐

  1. java抓取并保存图片_利用JAVA抓取网站的所有图片并保存于本地

    由于今天我要保存一个网页上的所有图片并做一个ppt,但是这个网页比较蛋疼,是微信上的一个类似于动画的东西,所以没法保存整个网页然后直接取照片, 所以我采用java写了一个程序,采用类似于网络爬虫的思路 ...

  2. js截屏 video_用原生JS和html5进行视频截图并保存到本地

    Video视频截图 body, h1, h2, p { margin:0; padding:0; } html { font-family:"微软雅黑"; background-c ...

  3. Flutter生成长截图并保存在本地

    xml中需要配置权限 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/&g ...

  4. Android实现对Dialog的截图并保存在本地

    直接上代码: public class TestDilaog extends Dialog {public TestDilaog(@NonNull Context context) {super(co ...

  5. java通过url获取网页内容_Java语言通过URL读取网页数据并保存到本地文件(代码实例)...

    本文主要向大家介绍了Java语言通过URL读取网页数据并保存到本地文件(代码实例),通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. Java通过URL读取网页数据并保存到本地文件(代码 ...

  6. QT5 界面截图保存到本地+输出PDF/WORD格式文档+QT界面中文乱码及输出PDF中文乱码的解决(亲身实践并且成功)

    最近做了一个和QT5有关的项目,遇到很多问题也学习到不少,特意写下来希望帮到更多的人.(我的版本VS2017+QT5.12.0) 一.QT5截图并保存到本地 在头文件添加必须项 #include &l ...

  7. java使用adb连接模拟器截图并把截图文件直接保存到电脑上

    直接贴代码: import java.io.*;/**** 利用java使用adb工具连接模拟器截图,并将截图保存到电脑上.* 涉及二进制和16进制的转换*/ public class test2 { ...

  8. Jsoup:使用Java将爬虫得到的数据写入Excel,Jsoup得到的数据进行持久化,爬虫数据保存到本地Excel中

    Jsoup:使用Java将爬虫得到的数据写入Excel,Jsoup得到的数据进行持久化,爬虫数据保存到本地Excel中 一.资源 EasyExcel使用教程 Jsoup爬虫教程 二.代码 xml依赖 ...

  9. Java实现电脑屏幕的截取并保存成图片

    其实截图的知识也不难 额(⊙o⊙)- 下面那个代码写辣么辣么长是俺的错 (时隔一年我回来看一眼,忍不住道当年哪个傻B写的傻B玩意儿--心酸心累心惆怅) 为了表达歉意 我特定重新写了一个放在最最最后面 ...

最新文章

  1. 如何设计一个复杂的业务系统?从对领域设计、云原生、微服务、中台的理解开始...
  2. butterKnife@BindView报错: If this view is optional add '@Nullable' annotation
  3. 超纯超美的曲线(Peter De Jong Attractor)
  4. Vue.js CLI4 Vue.config.js标准配置 (最全注释)
  5. win10必须禁用的服务_关闭这几个系统服务,让你的电脑不再卡!
  6. 实战经验总结:怎么避免和解决LinkedIn领英帐号被封(被限制登录)?
  7. latex 分布符号_latex符号大全
  8. uniapp 小程序列表懒加载
  9. ML Note 3.4 - 数据降维算法 PCA / t-SNE
  10. Java中的23种设计模式的介绍
  11. Android--Button、TabLayout英文小写自动变为大写的问题
  12. Windows XP注册表信息
  13. 基于zookeeper的瞬时节点实现分布式锁
  14. 名片管理系统 #python项目 #演练 #增删改查CRUD #全程教程
  15. Ubuntu系统安装搜狗(sougou for linux)输入法
  16. matlab频域取样间隔,实验二 时域采样与频域采样及MATLAB程序
  17. “源”来是你-Vol.32 | 知名图数据平台 Neo4j 招聘中国社区经理
  18. 心理学-在对的时间遇见对的人,不负自己,不负时光。
  19. 在安装文件中解压sfx压缩文件
  20. JAVA重庆旅游景点计算机毕业设计Mybatis+系统+数据库+调试部署

热门文章

  1. 直接访问WEB-INF目录下的JSP页面的方法
  2. 什么是张量(tensor)
  3. Qt DLL总结【二】-创建及调用QT的 DLL
  4. cctype 头文件定义 函数列表
  5. Tomcat错误解决
  6. ASP.NET TextBox 当鼠标点击后清空默认提示文字
  7. (转)LUA与python根本就不具有可比性
  8. SQL Server应用程序中的高级SQL注入[转]
  9. 成外集训小记(更新到7.31)
  10. python+selenium,实现带有验证码的自动化登录功能