Как я измеряю размеры на экране?

У меня есть изображение на экране, и я хочу измерить его ширину. Конечно, я могу использовать линейку, но это причудливо и медленно. Есть ли что-то, где я могу нажать сочетание клавиш, вытащить область, и это скажет мне высоту и ширину той области?

Что-то подобное Линейке Страницы для Google Chrome.

В настоящее время я использую Сдвиг + PrtScn и вытаскиваю область, сохраняю образ и затем вхожу в Свойства для обнаружения его высоты и ширины.

29
задан 9 January 2019 в 04:25

3 ответа

Используя затвор

Первая установка Затвор , если Вам не установили его.

sudo apt-get install shutter

Открывают предпочтения при Редактировании-> Предпочтения и выбирают вкладку поведения.
Проверка 'Запускают затвор при входе в систему' и 'Окне Hide на первом запуске'. См. снимок экрана ниже:

enter image description here

Использование

  1. Удостоверяется, что значок панелей затвора видим, и выберите свое окно или независимо от того, что Вы хотите иметь размеры.
  2. Нажимают на значок затвора и выбирают 'выбор'.

enter image description here

  1. Выбор Ваша начальная точка и перетаскивают к Вашей конечной точке. Целое окно будет темнеть кроме Вашего выбора. Можно переместить границы для получения больше 'к точке' результаты.
  2. Затвор предоставит диалоговому окну координаты X и Y и размер (который является тем, что Вы хотите) выбора. См. снимок экрана ниже в верхнем левом углу примера.

enter image description here

  1. А уменьшил снимок экрана, показывающий его, чтобы быть 727 пкс на 367 пкс:

enter image description here

  1. Наконец просто нажатие Esc , чтобы отклонить выбор и скрыть затвор.
  2. Продолжают то, что Вы делали.
10
ответ дан 23 November 2019 в 00:52

Как это работает

Сценарий ниже измеряет размер области между двумя местами указателя мыши.

Это работает, как следует:

  1. Поместите указатель мыши в первое положение (не нажимая)

    enter image description here

  2. Нажмите сочетание клавиш по Вашему выбору (см. далее ниже),

  3. Поместите мышь во второе положение (снова, не нажимая)

    enter image description here

  4. Нажмите свое сочетание клавиш снова. Уведомление скажет Вам точный размер (пкс) области.

    enter image description here

Опции

Можно выбрать (путем некомментария одной из строк), как требуется быть уведомленными; любой уведомлением:

enter image description here

Или окно информации о Zenity:

enter image description here

(Примеры из различных областей),

Как использовать

  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 установленный)
  • Добавленный маленькая экранная тусклая флэш-память подтверждения, когда у сочетания клавиш требуют первых координат. Это кажется немного более удобным для пользователя, чтобы дать пользователю некоторое подтверждение действия.
42
ответ дан 23 November 2019 в 00:52

Используя помои

Другой простой способ определить область выбора при помощи slop (Выберите Операцию), утилита командной строки, "которая запрашивает для выбора от пользователя и печатает регион к stdout".

slop comparitively новый инструмент и не был упакован для 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

Снимок экрана:

enter image description here

Быстрая разбивка команд использовала:

  • slop -t 0 -b 1 - предложите пользователю выбирать экранную область; не выбирайте полные окна (-t 0), граница выделения набора к 1 пкс (-b 1)
  • eval $(...) - считайте вывод slop в переменные
  • notify-send ... - отправьте уведомление GUI с информацией о выбранной области
  • echo ${W}x${H} | xsel -bi - размеры копии к буферу обмена (требует xselsudo apt-get install xsel)
2
ответ дан 23 November 2019 в 00:52

Другие вопросы по тегам:

Похожие вопросы: