Python Imaging Library no logra capturar la pantalla completa

Estoy usando PIL para capturar una captura de pantalla, pero solo está capturando una parte de la pantalla.

Aquí hay una captura de pantalla de mi escritorio

Y esto es lo que captura el progtwig.

Como puede ver, la pantalla tiene una buena cantidad de espacio recortado en el lateral y en la parte inferior. Traté de corregir esto ajustando el tamaño de la zona de captura, pero eso solo resultó en áreas adicionales para ser rellenadas con negro

Estoy pensando que hay un límite a la resolución máxima que la biblioteca puede capturar, pero realmente no puedo encontrar ninguna documentación que lo diga.

Abajo esta mi codigo

import ImageGrab import os import time def screenGrab(): box = (0, 0, 1920, 1080) im = ImageGrab.grab(box) im.save(os.getcwd() + '\\screenshot_' + str(int(time.time())) + '.png', 'PNG') def main(): screenGrab() if __name__ == '__main__': main() 

¿Alguien sabe cómo solucionar este problema o sabe por qué está sucediendo?

Estaba teniendo este problema demasiado temprano hoy. El script solo capturaría píxeles 0,0 – 1536,864. Recientemente cambié a Windows 8 y noté que algunos progtwigs parecían mostrarse con la resolución incorrecta. Después de algunas búsquedas encontré una solución.

  • Vaya a su directorio de python (c: / python27 / para mí)
  • Haga clic derecho en python.exe y seleccione propiedades
  • Seleccione la pestaña de compatibilidad
  • Presiona el botón “Cambiar configuración para todos los usuarios”
  • Marque la casilla “Deshabilitar la escala de la pantalla en la configuración de alta resolución de ppp”
  • ImageGrab ahora capturará la resolución completa

Lo actualizaré si encuentro una solución universal, pero pensé que publicaría aquí ya que busqué durante una hora aproximadamente y no pude encontrar una solución.

EDITAR:

Arreglo universal

  • clic derecho en el escritorio
  • seleccione “resolución de pantalla”
  • haga clic en “hacer texto y otros elementos más grandes o más pequeños”
  • marque “Permítame elegir un nivel de escala para todas mis pantallas”
  • seleccione “más pequeño – 100%”

Esto dará como resultado un texto e icons más pequeños pero más definidos.

Hay una solución alternativa para esto sin tener que manipular la configuración del sistema operativo. La solución es usar lo siguiente para hacer que su progtwig tenga en cuenta los DPI en Windows:

 from ctypes import windll user32 = windll.user32 user32.SetProcessDPIAware() 

Espero que ayude