Индекс изображения вне диапазона, за исключением того, что не должно быть - PullRequest
0 голосов
/ 16 февраля 2019

Я устанавливаю приложение, которое должно снимать экран с определенного окна.Я использовал некоторый код, который я нашел, чтобы получить положение и размер окна, и оно, кажется, сработало, согласно выводу строки 26, оно работает просто отлично.Но когда я пытаюсь получить какой-либо пиксель из соответствующего bbox (ограничивающего прямоугольника), даже (1,1), он выдаст IndexError: image index out of range, хотя размер окна определенно больше 1,1, что подтверждается выводом строки 26.Как я могу решить эту проблему, и почему она кажется вне диапазона?

import PIL.ImageGrab as IG
import win32gui
x = 0
y = 0
w = 0
h = 0
def callback(hwnd, extra):
    if win32gui.GetWindowText(hwnd) == "Window": #replace window with whatever you like for testing
        rect = win32gui.GetWindowRect(hwnd)
        global x
        global y
        global w
        global h
        x = rect[0]
        y = rect[1]
        w = rect[2] - x
        h = rect[3] - y

def main():
    win32gui.EnumWindows(callback, None)

if __name__ == '__main__':
    main()

print(x,y,w,h) #DEBUG
screen = IG.grab(bbox=(x,y,w,h))
print(screen.getpixel((1,1)))

1 Ответ

0 голосов
/ 16 февраля 2019

Я понял проблему сейчас;Ограничительная рамка состоит не из ширины и высоты XY, а из координат в верхнем левом и нижнем правом углу ограничительной рамки.Это означало, что размер ограничительной рамки был отрицательным, поэтому проблема.

...