A cross-platform multi-screen shot module in pure python using ctypes
Project description
Very basic, it will grab one screen shot by monitor or a screen shot of all monitors and save it to an optimised PNG file, Python 2.7/3.4 compatible & PEP8 compliant.
So, while you can pip install –upgrade mss, you may just drop it in your project and forget about it.
MSS stands for Multi-Screen Shot.
It’s under zlib licence.
Testing
You can try the MSS module directly from the console:
python2 mss.py [--debug] python3 -X faulthandler mss.py
Passing the –debug argument will make it more verbose.
Instance the good class
You can determine automatically which class to use:
from platform import system import mss systems = { 'Darwin': mss.MSSMac, 'Linux': mss.MSSLinux, 'Windows': mss.MSSWindows } mss_class = systems[system()]
Or simply import the good one:
from mss import MSSLinux as mss_class
init(debug)
When initialising an instance of MSS, you can enable debug output:
mss = mss_class(debug=True)
save(output, screen, callback)
For each monitor, grab a screen shot and save it to a file.
Parameters:
output - string - the output filename. It can contain '%d' which will be replaced by the monitor number. screen - integer - grab one screen shot of all monitors (screen=-1) grab one screen shot by monitor (screen=0) grab the screen shot of the monitor N (screen=N) callback - function - in case where output already exists, call the defined callback function with output as parameter. If it returns True, then continue; else ignores the monitor and switches to ne next.
This is a generator which returns created files.
Examples
Then, it is quite simple:
mss = mss_class() try: # One screen shot per monitor for filename in mss.save(): print('File: "{}" created.'.format(filename)) # Screen shot of the monitor 1 for filename in mss.save(output='monitor-%d.png', screen=1): print('File: "{}" created.'.format(filename)) # A shot to grab them all :) for filename in mss.save(output='full-screenshot.png', screen=-1): print('File: "{}" created.'.format(filename)) # Example with a callback def on_exists(fname): ''' Callback example when we try to overwrite an existing screen shot. ''' from os import rename newfile = fname + '.old' print('Renaming "{}" to "{}"'.format(fname, newfile)) rename(fname, newfile) return True # Screen shot of the monitor 1, with callback for fname in mss.save(output='mon-%d.png', screen=1, callback=on_exists): print('File: "{}" created.'.format(fname)) except ScreenshotError as ex: print(ex)
Bonus
Just for fun … Show us your screen shot with all monitors in one file, we will update the gallery.
Link to the galley: https://tiger-222.fr/tout/python-mss/galerie/
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file mss-0.0.6.tar.gz
.
File metadata
- Download URL: mss-0.0.6.tar.gz
- Upload date:
- Size: 10.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4a72a6f54afede25de7c472551120a696984d0ce7bcc0246f388d3fdf0064f84 |
|
MD5 | d344278b17052084dd960996d74ceb76 |
|
BLAKE2b-256 | 0a94511459aa48f680888a30424dd1295e2bb5eb407303d44b45276cceab0e1f |