import java.awt.AWTException;
import java.awt.Canvas;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.GroupLayout;
import javax.swing.JFrame;
import javax.swing.WindowConstants;
import javax.swing.GroupLayout.Alignment;
/**
* 自动截屏
*
*
*/
public class Capture extends JFrame implements Runnable{
/**
*
*/
private static final long serialVersionUID = 1L;
private Canvas screenCanvas;
private volatile boolean stop;
private Robot robot;
private Dimension dim;
public Capture() {
initComponents();
try {
robot = new Robot();
} catch (AWTException ex) {
ex.printStackTrace();
}
dim = Toolkit.getDefaultToolkit().getScreenSize();
}
private void initComponents() {
screenCanvas = new java.awt.Canvas();
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
stop = true;
setResizable(false);
GroupLayout layout = new GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(Alignment.LEADING).addComponent(screenCanvas,GroupLayout.PREFERRED_SIZE, 519,GroupLayout.PREFERRED_SIZE) );
layout.setVerticalGroup(layout.createParallelGroup(Alignment.LEADING).addComponent(screenCanvas,GroupLayout.PREFERRED_SIZE, 434,GroupLayout.PREFERRED_SIZE));
pack();
}
public static void main(String args[]) {
final Capture capture = new Capture();
EventQueue.invokeLater(new Runnable() {
public void run() {
capture.setVisible(true);
}
});
Thread cutThread = new Thread(capture);
cutThread.start();
}
public void run() {
stop = false;
// while(!stop) {
BufferedImage bImage = robot.createScreenCapture(new
Rectangle(dim.width, dim.height));
Graphics g = this.screenCanvas.getGraphics();
g.drawImage(bImage, 0, 0, this);
try {
Thread.sleep(5000);
} catch (InterruptedException ex) {
ex.printStackTrace();
}
try {
ImageIO.write(bImage, "jpg", new File("e:/456.jpg"));
} catch (IOException e) {
e.printStackTrace();
}
//}
}
private synchronized void stop() {
stop = true;
}
//本来就没错呀
public static void targetZoomOut(String sourcePath) { //将目标图片缩小成256*256并保存
File file1 = new File(sourcePath); //用file1取得图片名字
String name = file1.getName();
try {
BufferedImage input = ImageIO.read(file1);
BufferedImage inputbig = new BufferedImage(256, 256, BufferedImage.TYPE_INT_BGR);
Graphics2D g = (Graphics2D) inputbig.getGraphics();
g.drawImage(input, 0, 0,256,256,null); //画图
g.dispose();
inputbig.flush();
File file2 = new File("e:/"); //此目录保存缩小后的关键图
if (file2.exists()) {
System.out.println("多级目录已经存在不需要创建!!");
} else {
//如果要创建的多级目录不存在才需要创建。
file2.mkdirs();
}
String fname = name.substring(0, name.lastIndexOf("."));//新名字
ImageIO.write(inputbig, "jpg", new File("e:/" + fname + ".jpg")); //将其保存在C:/imageSort/targetPIC/下
} catch (Exception ex) {
ex.printStackTrace();
}
}
}