Как сделать скриншот центра экрана в 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

