java实现截图并保存到本地

编程入门 行业动态 更新时间:2024-10-27 14:23:38

java实现<a href=https://www.elefans.com/category/jswz/34/1769444.html style=截图并保存到本地"/>

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;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();public  GuiCamera(){fileName=defaultName;imageFormat=defaultImageFormat;}public GuiCamera(String s,String format) {fileName=s;imageFormat=format;}/*** 对屏幕进行拍照* * **/public void snapshot(){try {//拷贝屏幕到一个BufferedImage对象screenshotBufferedImage screenshot=(new Robot()).createScreenCapture(new Rectangle(0,0,(int)d.getWidth(),(int)d.getHeight()));serialNum++;//根据文件前缀变量和文件格式变量,自动生成文件名String name=fileName+String.valueOf(serialNum)+"."+imageFormat;System.out.println(name);File f=new File(name);System.out.println("Save File-"+name);//将screenshot对象写入图像文件ImageIO.write(screenshot, imageFormat, f);System.out.println("..Finished");} catch (Exception e) {System.out.println(e);}}public static void main(String[] args) {//"C:\\sally\\bootstrap栅格"是根据自己随意找的一个图片形式,"png"是图片的格式GuiCamera cam=new GuiCamera("C:\\sally\\bootstrap栅格","png");cam.snapshot();}
}

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

3.方法二:

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;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;@Overridepublic 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);//加上1,防止width,height为0int width=Math.abs(endx-orgx)+1;int height=Math.abs(endy-orgy)+1;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();}}public static void main(String[] args) {//全屏运行RectD rd = new RectD();GraphicsDevice gd = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();gd.setFullScreenWindow(rd);}
}
----------------------------------------------------------------------------------------------------------------------------------------

4.方法三:

package com.credream.ocr;
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();//根据指定的区域抓取屏幕的指定区域,1300是长度,800是宽度。BufferedImage bi=robot.createScreenCapture(new Rectangle(1300,800));//把抓取到的内容写到一个jpg文件中ImageIO.write(bi, "jpg", new File("C:\\sally\\bootstrap栅格1.png"));} catch (AWTException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}
}
------------------------------------------------------------------------------------------------------------------------------------

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


更多推荐

java实现截图并保存到本地

本文发布于:2024-03-08 19:36:54,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1722073.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:截图   并保存   java

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!