`
kfcman
  • 浏览: 395536 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java实现截图并保存到本地

    博客分类:
  • java
 
阅读更多

1.java实现截图并保存到本地

提供给大家三个方法,随意整理的

2.方法一:

 

  1.  
    package com.credream.ocr;
  2.  
     
  3.  
    import java.awt.Dimension;
  4.  
    import java.awt.Rectangle;
  5.  
    import java.awt.Robot;
  6.  
    import java.awt.Toolkit;
  7.  
    import java.awt.image.BufferedImage;
  8.  
    import java.io.File;
  9.  
     
  10.  
    import javax.imageio.ImageIO;
  11.  
     
  12.  
    public class GuiCamera {
  13.  
    private String fileName;
  14.  
    private String defaultName="GuiCamera";
  15.  
    static int serialNum=0;
  16.  
    private String imageFormat;//图像文件的格式
  17.  
    private String defaultImageFormat="jpg";
  18.  
    Dimension d=Toolkit.getDefaultToolkit().getScreenSize();
  19.  
     
  20.  
    public GuiCamera(){
  21.  
    fileName=defaultName;
  22.  
    imageFormat=defaultImageFormat;
  23.  
    }
  24.  
     
  25.  
    public GuiCamera(String s,String format) {
  26.  
    fileName=s;
  27.  
    imageFormat=format;
  28.  
    }
  29.  
    /**
  30.  
    * 对屏幕进行拍照
  31.  
    *
  32.  
    * **/
  33.  
    public void snapshot(){
  34.  
    try {
  35.  
    //拷贝屏幕到一个BufferedImage对象screenshot
  36.  
    BufferedImage screenshot=(new Robot()).createScreenCapture(
  37.  
    new Rectangle(0,0,(int)d.getWidth(),(int)d.getHeight()));
  38.  
    serialNum++;
  39.  
    //根据文件前缀变量和文件格式变量,自动生成文件名
  40.  
    String name=fileName+String.valueOf(serialNum)+"."+imageFormat;
  41.  
    System.out.println(name);
  42.  
    File f=new File(name);
  43.  
    System.out.println("Save File-"+name);
  44.  
    //将screenshot对象写入图像文件
  45.  
    ImageIO.write(screenshot, imageFormat, f);
  46.  
    System.out.println("..Finished");
  47.  
     
  48.  
    } catch (Exception e) {
  49.  
    System.out.println(e);
  50.  
    }
  51.  
    }
  52.  
    public static void main(String[] args) {
  53.  
    //"C:\\sally\\bootstrap栅格"是根据自己随意找的一个图片形式,"png"是图片的格式
  54.  
    GuiCamera cam=new GuiCamera("C:\\sally\\bootstrap栅格","png");
  55.  
    cam.snapshot();
  56.  
    }
  57.  
    }

----------------------------------------------------------------------------------------------------------------------------------------

3.方法二:

 

  1.  
    package com.credream.ocr;
  2.  
     
  3.  
    import java.awt.AWTException;
  4.  
    import java.awt.Color;
  5.  
    import java.awt.Dimension;
  6.  
    import java.awt.Graphics;
  7.  
    import java.awt.GraphicsDevice;
  8.  
    import java.awt.GraphicsEnvironment;
  9.  
    import java.awt.Rectangle;
  10.  
    import java.awt.Robot;
  11.  
    import java.awt.Toolkit;
  12.  
    import java.awt.event.KeyAdapter;
  13.  
    import java.awt.event.KeyEvent;
  14.  
    import java.awt.event.MouseAdapter;
  15.  
    import java.awt.event.MouseEvent;
  16.  
    import java.awt.event.MouseMotionAdapter;
  17.  
    import java.awt.image.BufferedImage;
  18.  
    import java.awt.image.RescaleOp;
  19.  
    import java.io.File;
  20.  
    import java.io.IOException;
  21.  
    import java.text.SimpleDateFormat;
  22.  
    import java.util.Date;
  23.  
     
  24.  
    import javax.imageio.ImageIO;
  25.  
    import javax.swing.JFrame;
  26.  
    import javax.swing.filechooser.FileSystemView;
  27.  
     
  28.  
    class RectD extends JFrame{
  29.  
     
  30.  
    private static final long serialVersionUID = 1L;
  31.  
    int orgx,orgy,endx,endy;
  32.  
    Dimension d=Toolkit.getDefaultToolkit().getScreenSize();
  33.  
    BufferedImage image;
  34.  
    BufferedImage tempImage;
  35.  
    BufferedImage saveImage;
  36.  
    Graphics g;
  37.  
     
  38.  
    @Override
  39.  
    public void paint(Graphics g) {
  40.  
    //缩放因子和偏移量
  41.  
    RescaleOp ro=new RescaleOp(0.8f, 0, null);
  42.  
    tempImage=ro.filter(image, null);
  43.  
    g.drawImage(tempImage, 0, 0,this);
  44.  
    }
  45.  
     
  46.  
    public RectD(){
  47.  
    snapshot();
  48.  
    setVisible(true);
  49.  
    //setSize(d);//最大化窗口
  50.  
    setDefaultCloseOperation(EXIT_ON_CLOSE);
  51.  
     
  52.  
    this.addMouseListener(new MouseAdapter(){
  53.  
    public void mousePressed(MouseEvent e){
  54.  
    orgx=e.getX();
  55.  
    orgy=e.getY();
  56.  
    }
  57.  
    });
  58.  
    //鼠标运动监听器
  59.  
    this.addMouseMotionListener(new MouseMotionAdapter() {
  60.  
    //鼠标拖拽事件
  61.  
    public void mouseDragged(MouseEvent e) {
  62.  
    endx=e.getX();
  63.  
    endy=e.getY();
  64.  
    g=getGraphics();
  65.  
    g.drawImage(tempImage, 0, 0, RectD.this);
  66.  
    int x=Math.min(orgx, endx);
  67.  
    int y=Math.min(orgy,endy);
  68.  
    //加上1,防止width,height为0
  69.  
    int width=Math.abs(endx-orgx)+1;
  70.  
    int height=Math.abs(endy-orgy)+1;
  71.  
    g.setColor(Color.BLUE);
  72.  
    g.drawRect(x-1, y-1, width+1, height+1);
  73.  
    //减1,加1都是为了防止图片将矩形框覆盖掉
  74.  
    saveImage=image.getSubimage(x, y, width, height);
  75.  
    g.drawImage(saveImage, x, y,RectD.this);
  76.  
    }
  77.  
    });
  78.  
     
  79.  
    this.addKeyListener(new KeyAdapter() {
  80.  
    @Override
  81.  
    //按键释放
  82.  
    public void keyReleased(KeyEvent e){
  83.  
    //按Esc键退出
  84.  
    if(e.getKeyCode()==27){
  85.  
    saveToFile();
  86.  
    System.exit(0);
  87.  
    }
  88.  
    }
  89.  
    });
  90.  
    }
  91.  
    public void saveToFile(){
  92.  
    SimpleDateFormat sdf=new SimpleDateFormat("yyyymmddHHmmss");
  93.  
    String name=sdf.format(new Date());
  94.  
    File path=FileSystemView.getFileSystemView().getHomeDirectory();
  95.  
    String format="jpg";
  96.  
    File f=new File(path+File.separator+name+"."+format);
  97.  
    try {
  98.  
    ImageIO.write(saveImage, format, f);
  99.  
    } catch (IOException e) {
  100.  
    e.printStackTrace();
  101.  
    }
  102.  
    }
  103.  
     
  104.  
    public void snapshot(){
  105.  
     
  106.  
    try {
  107.  
    Robot robot= new Robot();
  108.  
    Dimension d=Toolkit.getDefaultToolkit().getScreenSize();
  109.  
    image=robot.createScreenCapture(new Rectangle(0,0,d.width,d.height));
  110.  
     
  111.  
    } catch (AWTException e) {
  112.  
    e.printStackTrace();
  113.  
    }
  114.  
    }
  115.  
     
  116.  
    public static void main(String[] args) {
  117.  
    //全屏运行
  118.  
    RectD rd = new RectD();
  119.  
    GraphicsDevice gd = GraphicsEnvironment.getLocalGraphicsEnvironment()
  120.  
    .getDefaultScreenDevice();
  121.  
    gd.setFullScreenWindow(rd);
  122.  
    }
  123.  
    }

----------------------------------------------------------------------------------------------------------------------------------------

4.方法三:

 

  1.  
    package com.credream.ocr;
  2.  
    import java.awt.AWTException;
  3.  
    import java.awt.Rectangle;
  4.  
    import java.awt.Robot;
  5.  
    import java.awt.image.BufferedImage;
  6.  
    import java.io.File;
  7.  
    import java.io.IOException;
  8.  
    import javax.imageio.ImageIO;
  9.  
     
  10.  
    public class RobotExp {
  11.  
    public static void main(String[] args) {
  12.  
    try {
  13.  
    Robot robot=new Robot();
  14.  
    //根据指定的区域抓取屏幕的指定区域,1300是长度,800是宽度。
  15.  
    BufferedImage bi=robot.createScreenCapture(new Rectangle(1300,800));
  16.  
    //把抓取到的内容写到一个jpg文件中
  17.  
    ImageIO.write(bi, "jpg", new File("C:\\sally\\bootstrap栅格1.png"));
  18.  
     
  19.  
    } catch (AWTException e) {
  20.  
    e.printStackTrace();
  21.  
    } catch (IOException e) {
  22.  
    e.printStackTrace();
  23.  
    }
  24.  
    }
  25.  
    }

------------------------------------------------------------------------------------------------------------------------------------

三种方法,大致相同,只不过有的加了一些额外的方法。

https://blog.csdn.net/sanluo11/article/details/61923549

 

分享到:
评论

相关推荐

    java生成二维码并保存到本地

    在Java编程环境中,生成二维码并将其保存到本地是一项常见的任务,尤其在移动互联网应用、数据交换和物联网场景中。二维码(Quick Response Code)作为一种高效的信息载体,能够存储大量的文本、URL或其他数据,便于...

    java下载网络图片到本地保存

    在Java编程中,下载网络图片并将其保存到本地是一个常见的任务,特别是在开发涉及网页抓取、数据备份或者网络资源管理的项目中。这个过程通常包括以下几个步骤:建立网络连接、发送请求、接收响应数据以及将数据保存...

    java opencv 调用摄像头实现拍照及本地保存 支持上传FTP 路径配置

    本项目聚焦于使用Java和OpenCV库调用摄像头进行拍照,并将拍摄的照片保存到本地,同时支持通过FTP服务上传至远程服务器。下面将详细阐述这个过程中涉及的关键知识点。 1. **Java编程语言**: Java是一种广泛使用的...

    java实现文件保存到本地的方法

    本篇文章将详细介绍如何使用Java实现这一功能。主要涉及的知识点包括文件操作、输入/输出流以及异常处理。 首先,我们要了解Java中的文件操作主要依赖于`java.io`包中的类。在这个例子中,我们使用了`File`类来创建...

    java实现将网上页面下载到本地

    在Java编程语言中,我们可以利用HTTP协议来实现从网上下载文件到本地的功能。这个过程涉及到网络编程、IO流处理以及文件操作等知识点。下面将详细解释如何实现这一目标。 首先,我们需要了解HTTP协议,它是互联网上...

    java_rtp 实现视频播放与保存

    对于保存,可以将接收到的RTP包中的数据保存到本地文件,然后使用合适的工具进行重新编码和封装。 **音频播放与保存** 音频的处理与视频类似,只是数据类型和处理方式不同。音频数据通常是以PCM格式存储,可以使用...

    纯Java实现整个网页截图项目源代码

    在本项目中,"纯Java实现整个网页截图项目源代码" 是一个利用Java编程语言来实现的实用程序,它能够捕获整个网页的图像并将其保存为图片文件。这个项目的核心在于利用DJNativeSwing组件,这是一个开源的Java库,它...

    基于海康sdk的java程序摄像头实时抓拍图片保存到本地.zip

    标题中的“基于海康sdk的java程序摄像头实时抓拍图片保存到本地”表明这是一个使用海康威视(Hikvision)提供的SDK进行Java编程的项目,目的是实现通过摄像头实时捕获图像并将其保存到本地计算机的功能。这个项目是...

    java利用jxl导入Excel表格并保存到本地数据库

    在Java开发中,导入Excel数据并将其保存到本地数据库是一项常见的任务,特别是在处理大量结构化数据时。这里我们将深入探讨如何使用jxl库来实现这一功能。 jxl是一个流行的Java库,专门用于读写Microsoft Excel文件...

    三、JAVA调用海康威视SDK实现摄像头本地存储

    通过理解和实践,可以有效地将海康威视的摄像头功能集成到Java应用程序中,实现本地存储监控视频的目标。 总之,调用海康威视的SDK实现摄像头本地存储涉及多个技术环节,包括SDK的集成、网络通信、视频流处理和文件...

    java实现上传图片存入到数据库

    在Java编程中,将图片上传...总之,Java实现图片上传并存储到数据库涉及文件上传、文件处理、数据库操作等多个环节,需要综合运用多种技术。通过合理的代码设计和规范的数据库操作,可以构建出稳定可靠的图片上传系统。

    java swing opencv调用摄像头实现拍照及本地保存支持上传FTP路径配置

    在本文中,我们将深入探讨如何使用Java Swing和OpenCV库来调用摄像头,实现拍照功能,并将拍摄的照片本地保存以及支持上传至FTP服务器。通过理解并应用这些知识点,你可以创建一个用户友好的桌面应用程序,方便地...

    Java实现网页截图技术

    Java实现网页截图技术涉及到了多个知识点,包括使用`Desktop`和`Robot`类、处理图像、以及通过JNI调用本地库实现跨平台兼容性。通过深入理解这些概念,开发者可以灵活地应用于不同的项目中,以满足多样化的截图需求...

    基于java爬取网络图片并且保存到本地

    这个项目“基于Java爬取网络图片并且保存到本地”旨在为初学者提供一个学习实践的机会,了解如何利用Java进行网页抓取和数据处理。 首先,我们需要了解Java爬虫的基础。这通常涉及以下几个关键概念: 1. **HTTP...

    利用ffmpeg实现RTSP,RTMP推流以及保存到本地录像文件

    stream_push目录是实现核心推流和保存本地录像工程, demo目录是简单的调用例子,简单实现了抓取屏幕然后推流到RTSP,RTMP服务器,以及保存到本地。 bin目录是已经编译好的二进制文件. 有兴趣可查看BLOG: ...

    java实现本地读取图片存储到数据库中并在html网页显示

    在本文中,我们将深入探讨如何使用Java实现在本地读取图片并将其存储到数据库中,之后再通过HTML页面显示这些图片。这个过程涉及到的主要技术包括Java编程、数据库操作(特别是MySQL)以及前后端交互。 首先,我们...

    java 实现计算器 可以实现自动生成指定的4则运行题目 以及题目数量 生成的题目还可以导入到 excel中本地保存

    生成的题目还可以导入到 excel中本地保存 java 实现计算器 可以实现自动生成指定的4则运行题目 以及题目数量 生成的题目还可以导入到 excel中本地保存 java 实现计算器 可以实现自动生成指定的4则运行题目 以及...

    CSDN保存自己的文章到本地Java版本实现【可直接运行】.zip

    标题中的"CSDN保存自己的文章到本地Java版本实现"指的是一个使用Java编程语言开发的工具或程序,它的功能是帮助用户将CSDN(中国软件开发者网络)上的个人文章下载并保存到本地计算机上。这个工具可能是为了方便作者...

    android 视频录制 并保存到本地

    本文将详细讲解如何实现Android视频录制,并将录制的视频保存到设备的本地存储,尤其是SD卡上。 首先,Android系统提供了一个名为`MediaRecorder`的类,它是用于处理多媒体数据录制的核心组件。使用`MediaRecorder`...

    java实现多文件上传至本地服务器功能

    在实现Java实现多文件上传至本地服务器功能时,需要使用到以下技术: * HTML:用于创建文件选择输入框 * JavaScript:用于将选择的文件传输到服务器端 * Ajax:用于异步传输文件到服务器端 * Java Servlet:用于...

Global site tag (gtag.js) - Google Analytics