36 lines
996 B
Python
36 lines
996 B
Python
from easyprocess import EasyProcess
|
|
|
|
from pyscreenshot.plugins.backend import CBackend
|
|
from pyscreenshot.tempexport import read_prog_img
|
|
from pyscreenshot.util import extract_version, platform_is_osx
|
|
|
|
PROGRAM = "import"
|
|
# http://www.imagemagick.org/
|
|
|
|
|
|
class ImagemagickBackendError(Exception):
|
|
pass
|
|
|
|
|
|
class ImagemagickWrapper(CBackend):
|
|
name = "imagemagick"
|
|
is_subprocess = True
|
|
|
|
def grab(self, bbox=None):
|
|
if platform_is_osx():
|
|
raise ImagemagickBackendError("osx not supported")
|
|
|
|
command = [PROGRAM, "-silent", "-window", "root"]
|
|
if bbox:
|
|
pbox = "{}x{}+{}+{}".format(
|
|
bbox[2] - bbox[0], bbox[3] - bbox[1], bbox[0], bbox[1]
|
|
)
|
|
command += ["-crop", pbox]
|
|
im = read_prog_img(command)
|
|
return im
|
|
|
|
def backend_version(self):
|
|
stdout = EasyProcess([PROGRAM, "-version"]).call().stdout
|
|
s = stdout.splitlines()[0]
|
|
return extract_version(s.replace("-", " "))
|