捕获屏幕截图并将其转换为base64字符串

问题描述 投票:1回答:2

发布这个问题的目的是帮助电枢编码员和所有人摆脱以下问题(我从互联网上发现了一些误导性的问题)

  • 通过Java机器人捕获桌面映像
  • 图像转换/编码为base64字符串

答案代码由我自己发布,保证100%的工作状态

java base64 encode screen-capture awtrobot
2个回答
0
投票

在我看来,没有必要创建BufferedImage保持它简单如:

public String captureToBase64() {

    Rectangle screenSize = new 
    Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
    BufferedImage screenCapture = null;
    String base64Encoded = "";

    try {

        screenCapture = new Robot().createScreenCapture(screenSize);
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        ImageIO.write(screenCapture, "jpg", baos);
        baos.flush();
        byte[] encodeBase64 = Base64.encodeBase64(baos.toByteArray());
        base64Encoded = new String(encodeBase64);
        baos.close();

    } catch (AWTException e) {
        e.getMessage();
    }

    return base64Encoded;
}

-2
投票

这是答案

您需要以下java导入

import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;

和方法如下

public final String takeScreenshot() {
    String base64 = "";
    try {

        Rectangle screenRect = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
        BufferedImage capture;

        capture = new Robot().createScreenCapture(screenRect);

        BufferedImage bufferedThumbnail = new BufferedImage(capture.getWidth(null), capture.getHeight(null),
                BufferedImage.TYPE_INT_RGB);
        bufferedThumbnail.getGraphics().drawImage(capture, 0, 0, null);
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        ImageIO.write(bufferedThumbnail, "png", baos);
        baos.flush();
        byte[] imageInByte = baos.toByteArray();
        baos.close();
        byte[] encodedArr = Base64.encodeBase64(imageInByte);
        // base64 = encodedArr.toString();
        base64 = new String(encodedArr);

    } catch (Exception e) {
        e.printStackTrace();
        System.out.println("Error While Getting Screen Shot" + e.getLocalizedMessage());
    }
    return base64;
}
© www.soinside.com 2019 - 2024. All rights reserved.