squirrelRao 2011-03-12 18:10
浏览 258
已采纳

Java如何实现截图功能?有没有这方面开源的东东?

最近项目中涉及到一个问题:需要将已经画好的图形存储起来(注:利用其它的画图工具绘制),然后进行发送,在异地查看。

目前的一个思路是:希望将用画图工具绘制的图形采用截图的方式保存为图片格式,然后直接发送过去。由于绘制的图形是符合工业规范的图形,只能利用已有的工具进行绘制,还不能使用Java再造一个轮子。所以最直接的方式就是希望利用Java做一个截图的功能,进行截图。

寻求好的开源的Java的能实现截图的工具。或者Java支持截图的包什么的.... :lol:

  • 写回答

1条回答 默认 最新

  • redstarofsleep 2011-03-12 18:24
    关注

    可以进行截图的,你看看这个例子
    [code="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();
    
     }
    

    }
    [/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line