Как сделать скриншот центра экрана в python?

Сейчас он делает скриншот немного ниже и правее чем нужно.

#делаем скриншот и сохраняем его
w_width = windll.user32.GetSystemMetrics(0)
w_height = windll.user32.GetSystemMetrics(1)
print(w_width, w_height)
pyautogui.screenshot(savepathway + '\\' + check,
                     region=(w_width / 2, w_height / 2, scrweihgt, scrheight))

Для примера: Исходное изображение и результат

введите сюда описание изображения введите сюда описание изображения


Ответы (1 шт):

Автор решения: Егор Шукис

Решил проблему, когда лёг спать.

Оказалось всё очень просто, хоть и сразу не очевидно.

Проблема была как верно сказал Serg Bocharov, что координаты задаются для верхнего левого угла поля скриншота.

Соответственно для приведения его центра к центру экрана надо было разделить высоту скриншота на два, и ширину скриншота на два, после чего отнять полученный результат от длины и ширины экрана.

Вот как это выглядело в коде:

# ширина и высота скриншота
scrweihgt = x_set.get()
scrheight = y_set.get()

#получаем размеры экрана
w_width = windll.user32.GetSystemMetrics(0)
w_height = windll.user32.GetSystemMetrics(1)

#центрируем скриншот
cora = w_width / 2
corb = w_height / 2
scrweihgt = int(scrheight)
scrheight = int(scrheight)
corc = scrweihgt / 2
cord = scrheight / 2

#координаты центра поля скриншота
corx = cora - corc
cory = corb - cord
→ Ссылка