У меня есть изображение на экране, и я хочу измерить его ширину. Конечно, я могу использовать линейку , но это капризно и медленно. Есть ли что-то, где я могу щелкнуть по клавише быстрого вызова, перетащить область, и она скажет мне высоту и ширину этой области?
Нечто похожее на Page Ruler для Google Chrome.
В настоящее время я использую Shift+ PrtScnи перетаскиваю область, сохраняю изображение, а затем захожу в Свойства, чтобы узнать его высоту и ширину.
Как это работает
Сценарий ниже измеряет размер области между двумя точками мыши.
Работает следующим образом:
Поместите указатель мыши в первую позицию (без щелчка)
Нажмите комбинацию клавиш по вашему выбору (см. Далее ниже)
Поместите мышь во вторую позицию (снова без щелчка)
Нажмите вашу комбинацию клавиш еще раз. Уведомление скажет вам точный размер (px) области.
Опции
Вы можете выбрать (раскомментировав одну из строк), как вы хотите получать уведомления; либо с помощью уведомления:
Или информационное окно Zenity:
(Примеры из разных областей)
Как использовать
Скрипт использует
xdotool
:Скопируйте приведенный ниже скрипт в пустой файл, раскомментируйте одну из строк:
(быть уведомленным
notify-send
опцией)или:
для
Zenity
варианта.Сохраните скрипт в
~/bin
(вам, вероятно, придется создать каталог) какmeasure_area
(без расширения) и сделайте его исполняемым .Добавьте комбинацию клавиш по вашему выбору для запуска сценария: Выберите: «Системные настройки»> «Клавиатура»> «Ярлыки»> «Пользовательские ярлыки». Нажмите «+» и добавьте команду:
Заметки
Сценарий
объяснение
Когда скрипт вызывается в первый раз, он получает текущую позицию мыши с помощью
xdotool
команды:Затем он сохраняет позицию в (невидимый) файл
.measure_area.txt
, ожидая второго вызова.При втором вызове он читает файл, удаляет его и сравнивает сохраненные
x/y
координаты с последними, а также вычисляет размер области между ними.редактировать
Обновлен скрипт с рядом улучшений:
subprocess.Popen()
/subprocess.check_output()
команды (благодаря @muru, @Trengot)xdotool
установки)источник
Popen(['/bin/bash',...
вместоPopen(['zenity', '--info', ...
?command = ['zenity', '--info', '--title', 'Area Size', '--text', str(w) + ' x ' + str(h)]; subprocess.Popen(command)
требует гораздо меньше возиться с'
и"
, я думаю.xdotools
? Что то типаcheck_output(['xdotools', 'getmouseposition'])
?Используя помои
Другой простой способ определения области выбора - использование
slop
(Операция выбора) утилиты командной строки, «которая запрашивает выбор у пользователя и печатает область в стандартный вывод».slop
это сравнительно новый инструмент, который еще не был упакован для Debian / Ubuntu. В таком виде вам придется скомпилировать его из исходного кода:Установка является самой сложной частью.
slop
с самим собой на самом деле очень легко работать. Например, следующий однострочный запрос предложит вам выбрать область экрана и отобразит результат в виде уведомления и запишет его в буфер обмена:Скриншот:
Краткое описание используемых команд:
slop -t 0 -b 1
- предложить пользователю выбрать область экрана; не выбирайте полные окна (-t 0
), установите границу выделения на 1px (-b 1
)eval $(...)
- прочитать выводslop
в переменныеnotify-send ...
- отправить уведомление GUI с информацией о выбранной областиecho ${W}x${H} | xsel -bi
- скопировать размеры в буфер обмена (требуетсяxsel
→sudo apt-get install xsel
)источник