[英]Capture a screenshot and convert it into a base64 String
發布此問題的目的是幫助電樞編碼器以及所有人員擺脫以下問題(我從網上發現了一些關於以下問題的誤導性答案)
答案代碼由我自己發布,並保證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.