仅屏幕截图活动监视器 (gnome-screenshot)

仅屏幕截图活动监视器 (gnome-screenshot)

按 Printscreen 或单击屏幕截图将捕获两个屏幕,如果我只想捕获活动监视器显示,这可行吗?或者我应该使用快门或其他什么?

在此处输入图片描述

因此不是同一屏幕的空间,而是双显示器系统的两个屏幕。

答案1

gnome-screenshot据我所知,仅截取当前屏幕不是默认行为,也不是 中的选项,也不是任何其他屏幕截图应用程序中的选项。

然而,就像几乎所有事物一样,它可以被编写成脚本。

一个例子

下面的脚本将会:

  • 截屏
  • 在任意目录中自动创建(编号)图像
  • 自动裁剪图像到您当前所在的屏幕部分(从鼠标位置检索),并创建一个名为的裁剪图像:

    cropped_<image>.png
    

为了防止覆盖早期的屏幕截图,这些裁剪的图像与原始图像一样进行编号。

截屏

在此处输入图片描述

如果我在左侧屏幕:

在此处输入图片描述

如果我在正确的屏幕上:

在此处输入图片描述

剧本

#!/usr/bin/env python3
import os
from PIL import Image
import subprocess

# ---set the name of your (automatically numbered) screenshots (no extension)
imagename = "screenshot"
# ---set the path to where you (want to) save your screenshots
savepath = "/home/jacob/Bureaublad"

def get(cmd):
    return subprocess.check_output(cmd).decode("utf-8")

n = 1 
while True:
    name = imagename+"_"+str(n)+".png"
    path = os.path.join(savepath, name)
    if os.path.exists(path):
        n += 1
    else:
        break

# make the shot
subprocess.call(["gnome-screenshot", "-f", path])
# get the width of the left screen
screenborder = [int(n) for n in [s for s in get("xrandr").split()\
                if "+0+0" in s][0].split("+")[0].split("x")]
# read the screenshot
im = Image.open(path)
width, height = im.size
# get the mouse position
mousepos = int(get(["xdotool", "getmouselocation"]).split()[0].split(":")[1])
top = 0
bottom = height

if mousepos <= screenborder[0]:
    left = 0
    right = screenborder[0]
else:
    left = screenborder[0]
    right = width
# create the image
im.crop((left, top, right, bottom)).save(os.path.join(savepath, "cropped_"+name))

如何使用

  1. 该脚本需要xdotool,来获取鼠标位置:

    sudo apt-get install xdotool
    

    此外,不确定是否python3-pil默认安装:

    sudo apt-get install python3-pil
    
  2. 将上述脚本复制到一个空文件中,另存为crop_screenshot.py
  3. 在脚本的头部部分,设置屏幕截图的名称以及用于屏幕截图的目录:

    # ---set the name of your (automatically numbered) screenshots (no extension)
    imagename = "screenshot"
    # ---set the path to where you (want to) save your screenshots
    savepath = "/home/jacob/Bureaublad"
    
  4. 从终端测试运行脚本:

    python3 /path/to/crop_screenshot.py
    

    结果:

    在此处输入图片描述

  5. 如果一切正常,请将其添加到快捷方式。选择:系统设置 > “键盘” > “快捷方式” > “自定义快捷方式”。单击“+”并添加命令:

    python3 /path/to/crop_screenshot.py
    

笔记

脚本只是简单地将图像分割到左屏幕的宽度上。这就足够了,因为你们的屏幕具有相同的 y 分辨率对齐。

不过,脚本可以很好地编辑以使用任何屏幕排列,屏幕数量任意,只要屏幕排列不重叠即可。不过,在这种情况下,数学计算会稍微复杂一些。

如果有人感兴趣的话我稍后会添加。

答案2

尽管有上述优雅的脚本,但在 ubuntu 16.04 上我发现 alt-print-screen 如下所述: Print Screen 可捕获两个空间,而不是一个 有效。实际上,这只是打印当前窗口。如果目的是捕捉背景,我认为它不会起作用。

答案3

一个选项是按住Shift + PrtSc并将十字从显示器的一角拖到另一角。松开后,系统会截取该区域的屏幕截图。

相关内容