为什么 win32gui 的 getpixel() 在 Windows 10 中比 Windows 7 慢很多?有什么解决办法吗

问题描述 投票:0回答:1

我知道与 PIL 和其他此类库相比,使用 win32gui 是获取像素数据的最快方法。到目前为止,我在 Windows 7 笔记本电脑(旧)中执行代码,运行速度非常快,但最近我购买了一台新笔记本电脑(处理器优于我的旧笔记本电脑),它内置了 Windows 10,但在 Windows 10 中具有相同的程序速度慢很多,仔细观察后我明白代码的 getpixel 部分使整个程序变慢。因此,为了确保我计算了在 Windows 10 和 Windows 7 中执行相同代码所需的时间,我发现相同的代码在 Windows 7 中只花费了 0.03 秒,而在 Windows 10 中花费了 17 秒(即使在具有更高的速度之后)处理能力)。有什么解决办法吗? Windows 10 有没有更快的独立库?

from win32 import win32gui
import time

a = []


def getList():
    temp = []

    i_desktop_window_id = win32gui.GetDesktopWindow()
    i_desktop_window_dc = win32gui.GetWindowDC(i_desktop_window_id)
    long_colour = win32gui.GetPixel(i_desktop_window_dc, 100,100)
    i_colour = int(long_colour)
    px_tuple=((i_colour & 0xff), ((i_colour >> 8) & 0xff), ((i_colour >> 16) & 0xff))
    temp.append(px_tuple)
    win32gui.ReleaseDC(i_desktop_window_id, i_desktop_window_dc)    
    return temp

start = time.perf_counter()
for i in range(1000):
    a= getList()
stop = time.perf_counter()
print(stop - start)
windows-7 windows-10 pywin32 getpixel
1个回答
0
投票

有趣的是,这里的结果相同,13.1 秒,将其更改为使用 win32dll.gdi 库,并一直下降到 0.013 秒,所以快了两个数量级,这不是一点点。 :)

© www.soinside.com 2019 - 2024. All rights reserved.