截屏的代码


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="png";
    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://Hello", "png");//

        cam.snapShot();
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android截屏代码一般分为两种方式:使用View截取和使用SurfaceView截取。 使用View截取需要先获取到View的根布局对象,然后通过View的measure和layout方法确定View的大小和位置,再创建对应尺寸的Bitmap,最后调用View的draw方法将View的内容绘制到Bitmap上。 具体代码如下: ``` // 获取View的根布局对象 View view = getWindow().getDecorView().getRootView(); // 创建对应尺寸的Bitmap Bitmap bitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888); // 创建Canvas对象,将内容绘制到Bitmap上 Canvas canvas = new Canvas(bitmap); view.draw(canvas); // 存储Bitmap到文件中 try { FileOutputStream outputStream = new FileOutputStream(new File(Environment.getExternalStorageDirectory().getPath(),"screenshot.png")); bitmap.compress(Bitmap.CompressFormat.PNG, 100, outputStream); outputStream.flush(); outputStream.close(); } catch (IOException e) { e.printStackTrace(); } ``` 使用SurfaceView截取需要获取到SurfaceView的SurfaceHolder对象,然后通过SurfaceHolder的lockCanvas方法获取到Canvas对象,再将Canvas绘制到对应尺寸的Bitmap上。 具体代码如下: ``` // 获取SurfaceView的SurfaceHolder对象 SurfaceHolder holder = surfaceView.getHolder(); // 创建对应尺寸的Bitmap Bitmap bitmap = Bitmap.createBitmap(surfaceView.getWidth(), surfaceView.getHeight(), Bitmap.Config.ARGB_8888); // 获取Canvas对象,将内容绘制到Bitmap上 Canvas canvas = holder.lockCanvas(); Canvas canvas2 = new Canvas(bitmap); canvas2.drawBitmap(bitmap, 0, 0, null); // 释放SurfaceHolder holder.unlockCanvasAndPost(canvas); // 存储Bitmap到文件中 try { FileOutputStream outputStream = new FileOutputStream(new File(Environment.getExternalStorageDirectory().getPath(),"screenshot.png")); bitmap.compress(Bitmap.CompressFormat.PNG, 100, outputStream); outputStream.flush(); outputStream.close(); } catch (IOException e) { e.printStackTrace(); } ``` 以上是两种常见的Android截屏代码,使用时需要根据具体需求选择合适的方式进行截屏
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值