簡體   English   中英

捕獲屏幕截圖並將其轉換為base64字符串

[英]Capture a screenshot and convert it into a base64 String

發布此問題的目的是幫助電樞編碼器以及所有人員擺脫以下問題(我從網上發現了一些關於以下問題的誤導性答案)

  • 通過Java機器人捕獲桌面圖像
  • 圖像轉換/編碼base64字符串

答案代碼由我自己發布,並保證100%的工作狀態

在我看來,無需創建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;
}

這是答案

您需要以下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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM