gpt4 book ai didi

java - 使用JNA获取单个像素的颜色

转载 作者:行者123 更新时间:2023-11-30 10:05:23 24 4
gpt4 key购买 nike

我正在尝试获取屏幕上像素的颜色,但找不到具有可持续滴答率的方法。

所以我尝试的第一个选项是 Java 中的 Robot 类 - 它使用简单,但速度不够快。

然后我从 this post 找到了一种使用 JNA 捕获屏幕截图的方法.在对代码进行了一些测试和尝试之后,我发现我几乎能够得到我想要的东西,主要是通过修改这一行:

GDI32Extra.INSTANCE.BitBlt(hdcMemDC, 0, 0, width, height, hdcWindow, 0, 0, WinGDIExtra.SRCCOPY);

唯一的问题是它在挑选出您想要的单个像素之前仍然会捕获整个窗口,这似乎不对。这会大大降低滴答速度。

有什么方法可以让我只捕获一个像素,还是必须始终先捕获整个窗口?

我对 JNA 的库非常缺乏经验,所以也许我只是遗漏了一些简单的东西。如果有人能指出我正确的方向,将不胜感激。

谢谢。

最佳答案

尝试添加 GetPixel对您自己的 JNA 类起作用。

public interface MyGDI32 extends com.sun.jna.platform.win32.GDI32 {
MyGDI32 INSTANCE = Native.load("gdi32", MyGDI32.class, W32APIOptions.DEFAULT_OPTIONS);

int GetPixel(HDC hdc, int x, int y);
}

然后用 MyGDI32.INSTANCE.GetPixel() 调用它。

我不能保证它会比 Robot 类快,但它确实回答了您如何“使用 JNA 获取单个像素的颜色”的问题。

您必须解析 DWORD(32 位整数)返回值,它位于 COLORREF 中。格式:0x00bbggrr

关于java - 使用JNA获取单个像素的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55305416/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com