如何在屏幕上测量尺寸?


29

屏幕上有图像,我想测量其宽度。当然,我可以使用尺子,但是这太古怪而缓慢。有什么地方可以单击快捷键,将其拖出一个区域,它会告诉我该区域的高度和宽度吗?

与Google Chrome的Page Ruler类似。

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

Answers:


10

使用快门

如果尚未安装Shutter,请先安装它。

sudo apt-get install shutter

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

在此处输入图片说明

用法

  1. 确保快门面板图标可见,然后选择窗口或要测量的任何东西。
  2. 单击快门图标,然后选择“选择”。

在此处输入图片说明

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

在此处输入图片说明

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

在此处输入图片说明

  1. 最后,只需按Esc即可取消选择并隐藏快门。
  2. 继续您所做的一切。

非常整洁!我喜欢这里的十字线功能!非常全功能-可以采取窗口,选择具有延时等
dayuloli

42

怎么运行的

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

它的工作方式如下:

  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安装的情况下运行脚本)
  • 当按下第一个坐标的组合键时,增加了一个小的确认屏幕暗灯闪烁。为用户提供某种操作确认似乎更加用户友好。

1
太棒了!刚刚尝试过,效果很好!谢谢!您真的应该获得一枚奖章!
dayuloli,2015年

2
@dayuloli感谢您的提问!我喜欢做这样的事情。
Jacob Vlijm'2

真好!+1。好奇:为什么Popen(['/bin/bash',...而不是Popen(['zenity', '--info', ...
muru

1
摆弄报价?吴command = ['zenity', '--info', '--title', 'Area Size', '--text', str(w) + ' x ' + str(h)]; subprocess.Popen(command)需要大量用更少的插科打诨'",我想。
muru 2015年

1
可以进行相同的更改xdotools吗?像check_output(['xdotools', 'getmouseposition'])什么?
Holloway

2

使用污泥

确定选择区域的另一种简单方法是使用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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.