CapturerHelper.java
package cn.bisoft.java.api.facade.capturer;
import java.awt.BorderLayout;
import java.awt.Cursor;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.OutputStream;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JDialog;
import javax.swing.JPanel;
public class CapturerHelper
{
private static CapturerHelper CPAUTERHELPER = new CapturerHelper();
private int x1;
private int y1;
private int x2;
private int y2;
private int recX;
private int recY;
private int recH;
private int recW;
private boolean isFirstPoint;
private BackgroundImage labFullScreenImage;
private Robot robot;
private BufferedImage fullScreenImage;
private BufferedImage pickedImage;
private String defaultImageFormater;
private JDialog dialog;
public static void main(String[] args)
throws Exception
{
String userDir = System.getProperty("user.home");
File tempFile = new File(userDir + "\\桌面\\" + DateHelper.format("dd-HH-mm-ss") + ".jpg");
CapturerHelper capturer = getInstance();
capturer.captureImage();
capturer.saveAsJPEG(tempFile);
ClipboardHelper.setImage(capturer.getPickedImage());
System.exit(0);
}
private CapturerHelper()
{
this.isFirstPoint = true;
this.labFullScreenImage = new BackgroundImage();
this.defaultImageFormater = "png";
this.dialog = new JDialog();
try
{
this.robot = new Robot();
}
catch (Exception e)
{
e.printStackTrace();
}
JPanel cp = (JPanel)this.dialog.getContentPane();
cp.setLayout(new BorderLayout());
this.labFullScreenImage.addMouseListener(new MouseAdapter(this)
{
public void mouseReleased()
{
CapturerHelper.access$0(this.this$0, true);
CapturerHelper.access$6(this.this$0, CapturerHelper.access$1(this.this$0).getSubimage(CapturerHelper.access$2(this.this$0), CapturerHelper.access$3(this.this$0), CapturerHelper.access$4(this.this$0), CapturerHelper.access$5(this.this$0)));
CapturerHelper.access$7(this.this$0).setVisible(false);
}
});
this.labFullScreenImage.addMouseMotionListener(new MouseMotionAdapter(this)
{
public void mouseDragged()
{
if (CapturerHelper.access$8(this.this$0))
{
CapturerHelper.access$9(this.this$0, evn.getX());
CapturerHelper.access$10(this.this$0, evn.getY());
CapturerHelper.access$0(this.this$0, false);
}
else
{
CapturerHelper.access$11(this.this$0, evn.getX());
CapturerHelper.access$12(this.this$0, evn.getY());
int maxX = Math.max(CapturerHelper.access$13(this.this$0), CapturerHelper.access$14(this.this$0));
int maxY = Math.max(CapturerHelper.access$15(this.this$0), CapturerHelper.access$16(this.this$0));
int minX = Math.min(CapturerHelper.access$13(this.this$0), CapturerHelper.access$14(this.this$0));
int minY = Math.min(CapturerHelper.access$15(this.this$0), CapturerHelper.access$16(this.this$0));
CapturerHelper.access$17(this.this$0, minX);
CapturerHelper.access$18(this.this$0, minY);
CapturerHelper.access$19(this.this$0, maxX - minX);
CapturerHelper.access$20(this.this$0, maxY - minY);
CapturerHelper.access$21(this.this$0).drawRectangle(CapturerHelper.access$2(this.this$0), CapturerHelper.access$3(this.this$0), CapturerHelper.access$4(this.this$0), CapturerHelper.access$5(this.this$0));
}
}
public void mouseMoved()
{
CapturerHelper.access$21(this.this$0).drawCross(e.getX(), e.getY());
}
});
cp.add("Center", this.labFullScreenImage);
this.dialog.setCursor(Cursor.getPredefinedCursor(1));
this.dialog.setAlwaysOnTop(true);
this.dialog.setMaximumSize(Toolkit.getDefaultToolkit().getScreenSize());
this.dialog.setUndecorated(true);
this.dialog.setSize(this.dialog.getMaximumSize());
this.dialog.setModal(true);
}
public static CapturerHelper getInstance()
{
return CPAUTERHELPER;
}
public void captureImage()
{
this.fullScreenImage = this.robot.createScreenCapture(new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()));
ImageIcon icon = new ImageIcon(this.fullScreenImage);
this.labFullScreenImage.setIcon(icon);
this.dialog.setVisible(true);
}
public BufferedImage getPickedImage()
{
return this.pickedImage;
}
public ImageIcon getPickedIcon()
{
return new ImageIcon(getPickedImage());
}
public void saveAsPNG(File file)
throws Exception
{
ImageIO.write(getPickedImage(), "png", file);
}
public void saveAsJPEG(File file)
throws Exception
{
ImageIO.write(getPickedImage(), "JPEG", file);
}
public void write(OutputStream out)
throws Exception
{
ImageIO.write(getPickedImage(), this.defaultImageFormater, out);
}
}