问题描述
最近项目中涉及到一个问题:需要将已经画好的图形存储起来(注:利用其它的画图工具绘制),然后进行发送,在异地查看。目前的一个思路是:希望将用画图工具绘制的图形采用截图的方式保存为图片格式,然后直接发送过去。由于绘制的图形是符合工业规范的图形,只能利用已有的工具进行绘制,还不能使用Java再造一个轮子。所以最直接的方式就是希望利用Java做一个截图的功能,进行截图。寻求好的开源的Java的能实现截图的工具。或者Java支持截图的包什么的....
解决方案
可以进行截图的,你看看这个例子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;/******************************************************************************** 该JavaBean可以直接在其他Java应用程序中调用,实现屏幕的"拍照" This JavaBean is used to snapshot the* GUI in a Java application! You can embeded it in to your java application* source code, and us it to snapshot the right GUI of the application** @see javax.ImageIO* @author liluqun ([email]liluqun@263.net[/email])* @version 1.0*******************************************************************************/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(); /*************************************************************************** * 默认的文件前缀为GuiCamera,文件格式为PNG格式 The default construct will use the default * Image file surname "GuiCamera", and default image format "png" **************************************************************************/ public GuiCamera() { fileName = defaultName; imageFormat = defaultImageFormat; } /*************************************************************************** * @param s * the surname of the snapshot file * @param format * the format of the image file, it can be "jpg" or "png" * 本构造支持JPG和PNG文件的存储 **************************************************************************/ public GuiCamera(String s, String format) { fileName = s; imageFormat = format; } /*************************************************************************** * 对屏幕进行拍照 snapShot the Gui once **************************************************************************/ public void snapShot() { try { // 拷贝屏幕到一个BufferedImage对象screenshot BufferedImage screenshot = (new Robot()) .createScreenCapture(new Rectangle(0, 0, (int) d.getWidth(), (int) d.getHeight())); serialNum++; // 根据文件前缀变量和文件格式变量,自动生成文件名 String name = fileName + String.valueOf(serialNum) + "." + imageFormat; File f = new File(name); System.out.print("Save File " + name); // 将screenshot对象写入图像文件 ImageIO.write(screenshot, imageFormat, f); System.out.print("..Finished!n"); } catch (Exception ex) { System.out.println(ex); } } public static void main(String[] args) { GuiCamera cam = new GuiCamera("d:\qq", "bmp");// cam.snapShot(); }}