如何测量屏幕上的尺寸?

如何测量屏幕上的尺寸?

屏幕上有一张图片,我想测量它的宽度。当然我可以使用统治者,但这很古怪而且很慢。有没有什么方法可以让我点击快捷键,拖出一个区域,然后它会告诉我该区域的高度和宽度?

类似于页面标尺适用于 Google Chrome。

目前,我正在使用Shift+PrtScn并拖出该区域,保存图像,然后进入属性以找出其高度和宽度。

答案1

怎么运行的

下面的脚本测量鼠标指针两个位置之间的区域的大小。

其工作原理如下:

  1. 将鼠标指针放在第一个位置(不单击)

    在此处输入图片描述

  2. 按下您选择的组合键(见下文)

  3. 将鼠标放在第二个位置(同样不单击)

    在此处输入图片描述

  4. 再次按下组合键。通知将告诉您该区域的确切大小(px)。

    在此处输入图片描述

选项

您可以选择(通过取消注释其中一行)如何接收通知;通过以下通知:

在此处输入图片描述

或者 Zenity 信息窗口:

在此处输入图片描述

(示例来自不同领域)

如何使用

  1. 该脚本使用xdotool

    sudo apt-get install xdotool
    
  2. 将以下脚本复制到一个空文件中,取消注释其中一行:

    command = ['notify-send', 'Area size', str(w)+' x '+str(h)]
    

    (以选项通知为准notify-send

    或者:

    command = ['zenity', '--info', '--title', 'Area Size', '--text', str(w) + ' x ' + str(h)]
    

    作为Zenity选项。

  3. 将脚本保存在~/bin(您可能需要创建目录)中measure_area(无扩展名)使其可执行

  4. 添加您选择的组合键来运行脚本:选择:系统设置 > “键盘” > “快捷键” > “自定义快捷键”。单击“+”并添加命令:

    measure_area
    

笔记

  • 您必须先注销/登录
  • 你把谁当第一/第二并不重要;剧本衡量绝对值。

剧本

#!/usr/bin/env python3
import subprocess
import os
import math

home = os.environ["HOME"]
area = home+"/"+".measure_area.txt"

def get_pos():
    pos_data = subprocess.check_output(["xdotool", "getmouselocation"]).decode("utf-8")
    return [m[2:] for m in pos_data.split()[:2]]

def confirm():
    get = subprocess.check_output(["xrandr", "--verbose"]).decode("utf-8").split()
    for s in [get[i-1] for i in range(len(get)) if get[i] == "connected"]:
        br_data = float(get[get.index("Brightness:")+1])
        brightness = lambda br: ["xrandr", "--output", s, "--brightness", br]
        flash = ["sleep", "0.1"]
        for cmd in [brightness(str(br_data-0.1)), flash, brightness(str(br_data))]:
            subprocess.call(cmd)

if not os.path.exists(area):
    with open(area, "wt") as measure:
        measure.write(str(get_pos()))
    confirm()
else:
    second = get_pos()
    with open(area) as first_m:
        try:
            first = eval(first_m.read())
            w = int(math.fabs(int(second[0]) - int(first[0])))
            h = int(math.fabs(int(second[1]) - int(first[1])))
            #--- uncomment either one of the lines below:
            # command = ['notify-send', 'Area size', str(w)+' x '+str(h)]
            command = ['zenity', '--info', '--title', 'Area Size', '--text', str(w) + ' x ' + str(h)]
            #---
            confirm()
        except SyntaxError:
            text = "Please try again, there was an error in the data"
            command = ['zenity', '--info', '--title', 'Please try again', '--text', text]
        subprocess.Popen(command)
    os.remove(area)

解释

第一次调用脚本时,它使用以下xdotool命令获取当前鼠标位置:

xdotool getmouselocation

然后它将位置保存到一个(不可见的)文件中.measure_area.txt,等待第二次调用。
在第二次调用时,它会读取文件,将其删除,并将存储的x/y坐标与最新的坐标进行比较,并计算它们之间的区域大小。

编辑

更新了脚本并进行了一些改进:

  • 优化subprocess.Popen()/subprocess.check_output()命令(感谢@muru、@Trengot)
  • 添加修复程序,以防第一个数据文件出现问题(例如,如果用户第一次尝试运行脚本而没有xdotool安装)
  • 增加了一个小的确认屏幕,当按下组合键时,屏幕会暗淡闪烁,用于第一个坐标。这似乎更方便用户使用,可以给用户一些对某种行动的确认。

答案2

使用快门

首次安装快门如果您尚未安装它。

sudo apt-get install shutter

打开“编辑 -> 首选项”下的首选项,然后选择行为选项卡。
选中“登录时启动快门”和“首次启动时隐藏窗口”。参见下面的屏幕截图:

在此处输入图片描述

用法

  1. 确保快门面板图标可见并选择您的窗户或您想要测量的任何东西。
  2. 单击快门图标并选择“选择”。

在此处输入图片描述

  1. 选择起点并拖动到终点。整个窗口将变暗,除了您的选择。您可以移动边框以获得更“切中要点”的结果。
  2. Shutter 将提供一个对话框,其中包含所选内容的 X 和 Y 坐标以及大小(即您想要的大小)。请参见下面示例左上角的屏幕截图。

在此处输入图片描述

  1. 缩小后的屏幕截图显示其尺寸为 727px x 367px:

在此处输入图片描述

  1. 最后只需按下Esc即可取消选择并隐藏快门。
  2. 继续你正在做的事情。

答案3

使用 slop

确定选择区域的另一种简单方法是使用slop(选择操作),一个命令行实用程序,“用于查询用户的选择并将区域打印到标准输出”。

slop是一个相对较新的工具,尚未为 Debian/Ubuntu 打包。目前,您必须从源代码编译它:

sudo apt-get install build-essential cmake libxext-dev
git clone https://github.com/naelstrof/slop.git
cd slop
cmake ./
make && sudo make install

安装是最困难的部分。slop它本身其实非常容易使用。例如,下面的一行代码将提示您选择一个屏幕区域,并将结果显示为通知并将其写入剪贴板:

eval $(slop -t 0 -b 1) && notify-send  "Selection info" "Area: ${W} x ${Y}px \n Position: X = ${X}px, Y = ${Y}px" && echo ${W}x${H} | xsel -bi

截屏:

在此处输入图片描述

所用命令的快速分解:

  • slop -t 0 -b 1- 提示用户选择屏幕区域;不要选择整个窗口(-t 0),将选择边框设置为 1px(-b 1
  • eval $(...)- 读slop入变量的输出
  • notify-send ...- 发送包含选定区域信息的 GUI 通知
  • echo ${W}x${H} | xsel -bi- 将尺寸复制到剪贴板(需要xselsudo apt-get install xsel

相关内容