使用到的方法
实现连续截图并保存
- 实现原理在代码注释中讲的应该比较清楚了
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
/**
* Created with IntelliJ IDEA.
* Description: If you don't work hard, you will a loser.
* User: Listen-Y.
* Date: 2020-08-10
* Time: 9:53
*/
public class RobotImageDemo {
//设置连续截屏次数
private static int count = 100;
//设置每次截屏的间隔时间
private static int time = 100;
public static void main(String[] args) throws AWTException, IOException {
Robot robot = new Robot();
//设置三面后开始截图
System.out.println("三秒后开始截图");
robot.delay(3000);
//先要获取屏幕大小或者也可以自动设置截图的大小
Dimension size = Toolkit.getDefaultToolkit().getScreenSize();
for (int i = 0; i < count; i++) {
//截取图片获取图片缓冲流
BufferedImage bufferedImage = robot.createScreenCapture(new Rectangle(0, 0, size.width, size.height));
//设置文件的保存路径+保存时文件的名字格式 文件名字就以保存的i命名这样多次截图图片名字也不会重复
String url = "D:\\user\\testDate\\"
+ i + ".jpg";
//获得文件对象
File file = new File(url);
//将文件输出到指定的文件目录中
ImageIO.write(bufferedImage, "jpg", file);
if (i % 5 == 0) {
System.out.println("进行中...");
}
//让截图有间隔
robot.delay(time);
}
System.out.println("截图完成!!!");
}
}
实现连续播放图片
import javax.swing.*;
import java.awt.*;
/**
* Created with IntelliJ IDEA.
* Description: If you don't work hard, you will a loser.
* User: Listen-Y.
* Date: 2020-08-10
* Time: 16:14
*/
public class AutoLoadImage {
public static void main(String[] args) throws InterruptedException {
JFrame jFrame = new JFrame();
MyCanvas myCanvas = new MyCanvas();
//设置关闭窗口就结束程序
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//将图片按比例缩小倍展示
jFrame.setSize(960, 540);
//设置大小可变
jFrame.setVisible(true);
//加载图片
loadImage(myCanvas, jFrame);
}
private static void loadImage(MyCanvas myCanvas, JFrame jFrame) throws InterruptedException {
for (int i = 0; i < 100; i++) {
Image image = Toolkit.getDefaultToolkit().getImage("D:\\user\\testDate\\" + i + ".jpg");
myCanvas.setImage(image);
jFrame.add(myCanvas);
//设置连续加载图片间隔时间 会有闪白问题所有不会形成一个视频去播放 解决闪白问题需要使用双缓冲技术待我后续解决
Thread.sleep(300);
}
}
}
class MyCanvas extends Canvas {
private Image image;
public void setImage(Image image) {
this.image = image;
}
public void paint(Graphics graphics) {
//设置成随图片大小变化而变化 不会造成图片缺少
graphics.drawImage(image, 0, 0, this.getWidth(), this.getHeight(), this);
}
}
其实我的本意是想弄一个录屏的一个功能 但是在连续加载图片会有闪白 需要使用双缓冲技术去解决 有待后续解决