Java 如何使用createScreenCapture仅捕获屏幕的所需部分
以下代码捕获屏幕:Java 如何使用createScreenCapture仅捕获屏幕的所需部分,java,screen,awtrobot,Java,Screen,Awtrobot,以下代码捕获屏幕: import java.awt.Dimension; import java.awt.Rectangle; import java.awt.Robot; import java.awt.Toolkit; import java.awt.image.BufferedImage; public class capture{ public static void main(String args[]) { try { Dim
import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
public class capture{
public static void main(String args[]) {
try {
Dimension size = Toolkit.getDefaultToolkit().getScreenSize();
Robot robot = new Robot();
BufferedImage img = robot.createScreenCapture(new Rectangle(size));
} catch(Exception e) {
}
}
}
是否有办法仅捕获屏幕的所需部分(例如,从一个x、y点到另一个x、y点的矩形)?您可以设置左上角的
x
和y
,以及要捕获的矩形的宽度和高度尺寸,如下所示:
BufferedImage img = robot.createScreenCapture( new Rectangle(x, y, width, height) );
我尝试了
.createScreenCapture(300300200200)
,但它返回了一个错误:无法应用于给定类型…抱歉。刚刚检查了,以查看createscreenscapture
获取了一个矩形
对象。编辑了我的答案。现在应该可以用了,看看这个。您可以设置x、y和大小。在回答中提供代码时,解释其工作原理和方式总是很有帮助的。
import java.awt.AWTException;
import java.awt.Component;
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 java.io.IOException;
import javax.imageio.ImageIO;
/**
* This program demonstrates how to capture screenshot of a portion of screen.
*
*
*/
public class TaskBarCaptureImage {
public static void main(String[] args) {
try {
Robot robot = new Robot();
String format = "jpg";
String fileName = "TaskBar Captured." + format;
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
System.out.println("ScreenSize : " + screenSize);
Rectangle captureRect = new Rectangle(0, 728, 1366, 40); // taskbar
// zone
BufferedImage screenFullImage = robot.createScreenCapture(captureRect);
ImageIO.write(screenFullImage, format, new File(fileName));
int no = 1;
ImageIO.write(screenFullImage, format, new File("./imagenes/" + no + ".png"));
System.out.println("TaskBar Captured!");
} catch (AWTException | IOException ex) {
System.err.println(ex);
}
}
}