mirror of
				https://github.com/python-pillow/Pillow.git
				synced 2025-10-31 16:07:30 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			73 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| #
 | |
| # The Python Imaging Library
 | |
| # $Id$
 | |
| #
 | |
| # screen grabber (windows only)
 | |
| #
 | |
| # History:
 | |
| # 2001-04-26 fl  created
 | |
| # 2001-09-17 fl  use builtin driver, if present
 | |
| # 2002-11-19 fl  added grabclipboard support
 | |
| #
 | |
| # Copyright (c) 2001-2002 by Secret Labs AB
 | |
| # Copyright (c) 2001-2002 by Fredrik Lundh
 | |
| #
 | |
| # See the README file for information on usage and redistribution.
 | |
| #
 | |
| 
 | |
| from PIL import Image
 | |
| 
 | |
| ##
 | |
| # (New in 1.1.3)  The <b>ImageGrab</b> module can be used to copy
 | |
| # the contents of the screen to a PIL image memory.
 | |
| # <p>
 | |
| # The current version works on Windows only.</p>
 | |
| #
 | |
| # @since 1.1.3
 | |
| ##
 | |
| 
 | |
| try:
 | |
|     # built-in driver (1.1.3 and later)
 | |
|     grabber = Image.core.grabscreen
 | |
| except AttributeError:
 | |
|     # stand-alone driver (pil plus)
 | |
|     import _grabscreen
 | |
|     grabber = _grabscreen.grab
 | |
| 
 | |
| ##
 | |
| # (New in 1.1.3) Take a snapshot of the screen.  The pixels inside the
 | |
| # bounding box are returned as an "RGB" image.  If the bounding box is
 | |
| # omitted, the entire screen is copied.
 | |
| #
 | |
| # @param bbox What region to copy.  Default is the entire screen.
 | |
| # @return An image
 | |
| # @since 1.1.3
 | |
| 
 | |
| def grab(bbox=None):
 | |
|     size, data = grabber()
 | |
|     im = Image.frombytes(
 | |
|         "RGB", size, data,
 | |
|         # RGB, 32-bit line padding, origo in lower left corner
 | |
|         "raw", "BGR", (size[0]*3 + 3) & -4, -1
 | |
|         )
 | |
|     if bbox:
 | |
|         im = im.crop(bbox)
 | |
|     return im
 | |
| 
 | |
| ##
 | |
| # (New in 1.1.4) Take a snapshot of the clipboard image, if any.
 | |
| #
 | |
| # @return An image, a list of filenames, or None if the clipboard does
 | |
| #     not contain image data or filenames.  Note that if a list is
 | |
| #     returned, the filenames may not represent image files.
 | |
| # @since 1.1.4
 | |
| 
 | |
| def grabclipboard():
 | |
|     debug = 0 # temporary interface
 | |
|     data = Image.core.grabclipboard(debug)
 | |
|     if isinstance(data, bytes):
 | |
|         from PIL import BmpImagePlugin
 | |
|         import io
 | |
|         return BmpImagePlugin.DibImageFile(io.BytesIO(data))
 | |
|     return data
 |