Java 获取像素区域并转换为图像 - 如何才能更有效?

标签 java swing awt sun

我有一些代码可以抓取屏幕上的像素区域并将它们转换为 BufferedImage 对象。问题是 - 它非常慢,所以我正在寻求支持以提高其速度!

代码如下:

public BufferedImage getScreenPortion(Point topleft,Point bottomright){

    int width = bottomright.x - topleft.x;
    int height = bottomright.y - topleft.y;
    BufferedImage bi = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);

    for(int p=0;p<height;p++){

    for(int i= 0;i<width;i++){

        Color pixel = robot.getPixelColor(topleft.x+i, topleft.y+p);
        bi.setRGB(i, p, pixel.getRGB());
        }
    }

    return bi;


}

我正在传递它:getScreenPortion(new Point(1081,824),new Point(1111,844));这意味着我正在尝试获得大约30x20的区域 - 但它是耗时约 7 秒,速度慢得可怕!

最佳答案

修复了它 - 我现在改用:

Rectangle screenRect = new Rectangle(topleft.x, topleft.y, width, height);
BufferedImage grid = robot.createScreenCapture(screenRect);

关于Java 获取像素区域并转换为图像 - 如何才能更有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8175392/

相关文章:

java - 配置 Tomcat/Catalina 以在端口 80 上以根目录为应用程序提供服务

java - 将 Swing 应用程序转换为 3tier 应用程序

java - 使用扩展Swing组件,线程疑问

java - 如何在 java android 中运行进度条时禁用正在运行的 Activity

java - 按自制类的变量之一对自制类的数组列表进行排序,而clone()将不起作用

在 Java 中使用 TESSERACT API 时出现 java.lang.UnsatisfiedLinkError 异常

单击 jButton 时 Java GUI 卡住

java - 为 Swing/AWT 创建自定义设备以进行绘制

java - Repaint() 方法不调用 draw()

Java 重绘仅更新我的 Canvas 的一部分