Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/PIL/ImageGrab.py
diff options
context:
space:
mode:
Diffstat (limited to 'PIL/ImageGrab.py')
-rw-r--r--PIL/ImageGrab.py71
1 files changed, 71 insertions, 0 deletions
diff --git a/PIL/ImageGrab.py b/PIL/ImageGrab.py
new file mode 100644
index 0000000..ecbfbac
--- /dev/null
+++ b/PIL/ImageGrab.py
@@ -0,0 +1,71 @@
+#
+# The Python Imaging Library
+# $Id: ImageGrab.py 2134 2004-10-06 08:55:20Z fredrik $
+#
+# 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.
+#
+
+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.fromstring(
+ "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 Image.isStringType(data):
+ import BmpImagePlugin, StringIO
+ return BmpImagePlugin.DibImageFile(StringIO.StringIO(data))
+ return data