mirror of
https://github.com/python-pillow/Pillow.git
synced 2025-01-13 10:46:16 +03:00
Merge pull request #6783 from radarhere/grabclipboard
If available, use wl-paste or xclip for grabclipboard() on Linux
This commit is contained in:
commit
e107af41a9
|
@ -64,9 +64,13 @@ $bmp = New-Object Drawing.Bitmap 200, 200
|
|||
)
|
||||
p.communicate()
|
||||
else:
|
||||
with pytest.raises(NotImplementedError) as e:
|
||||
ImageGrab.grabclipboard()
|
||||
assert str(e.value) == "ImageGrab.grabclipboard() is macOS and Windows only"
|
||||
if not shutil.which("wl-paste"):
|
||||
with pytest.raises(
|
||||
NotImplementedError,
|
||||
match="wl-paste or xclip is required for"
|
||||
r" ImageGrab.grabclipboard\(\) on Linux",
|
||||
):
|
||||
ImageGrab.grabclipboard()
|
||||
return
|
||||
|
||||
ImageGrab.grabclipboard()
|
||||
|
|
|
@ -132,4 +132,18 @@ def grabclipboard():
|
|||
return BmpImagePlugin.DibImageFile(data)
|
||||
return None
|
||||
else:
|
||||
raise NotImplementedError("ImageGrab.grabclipboard() is macOS and Windows only")
|
||||
if shutil.which("wl-paste"):
|
||||
args = ["wl-paste"]
|
||||
elif shutil.which("xclip"):
|
||||
args = ["xclip", "-selection", "clipboard", "-t", "image/png", "-o"]
|
||||
else:
|
||||
raise NotImplementedError(
|
||||
"wl-paste or xclip is required for ImageGrab.grabclipboard() on Linux"
|
||||
)
|
||||
fh, filepath = tempfile.mkstemp()
|
||||
subprocess.call(args, stdout=fh)
|
||||
os.close(fh)
|
||||
im = Image.open(filepath)
|
||||
im.load()
|
||||
os.unlink(filepath)
|
||||
return im
|
||||
|
|
Loading…
Reference in New Issue
Block a user