Tenho uma imagem na tela e quero medir sua largura. Claro que posso usar uma régua , mas isso é caprichoso e lento. Existe algo em que posso clicar em uma tecla de atalho, arrastar uma área e ela me informará a altura e a largura dessa área?
Algo semelhante ao Page Ruler para Google Chrome.
Atualmente, estou usando Shift+ PrtScne arrasto a área, salve a imagem e, em seguida, vá em Propriedades para descobrir sua altura e largura.
Como funciona
O script abaixo mede o tamanho de uma área, entre dois locais do ponteiro do mouse.
Funciona da seguinte forma:
Coloque o ponteiro do mouse na primeira posição (sem clicar)
Pressione a combinação de teclas de sua escolha (veja mais abaixo)
Coloque o mouse na segunda posição (novamente sem clicar)
Pressione sua combinação de teclas novamente. Uma notificação informará o tamanho exato (px) da área.
Opções
Você pode escolher (removendo o comentário de uma das linhas) como deseja ser notificado; por uma notificação:
Ou uma janela de informações do Zenity:
(Os exemplos são de diferentes áreas)
Como usar
O script usa
xdotool
:Copie o script abaixo em um arquivo vazio, descomente uma das linhas:
(a ser notificado pela
notify-send
opção)ou:
para a
Zenity
opçãoSalve o script em
~/bin
(você provavelmente precisará criar o diretório) comomeasure_area
(sem extensão) e torne-o executável .Adicione uma combinação de teclas de sua escolha para executar o script: Escolha: Configurações do sistema> "Teclado"> "Atalhos"> "Atalhos personalizados". Clique no "+" e adicione o comando:
Notas
O script
Explicação
Quando o script é chamado pela primeira vez, ele obtém a posição atual do mouse com o
xdotool
comando:Em seguida, salva a posição em um arquivo (invisível)
.measure_area.txt
, aguardando a segunda chamada.Na segunda chamada, ele lê o arquivo, remove e compara as
x/y
coordenadas armazenadas com as mais recentes e calcula o tamanho da área entre elas.Editar
Atualizado o script com várias melhorias:
subprocess.Popen()
/subprocess.check_output()
comandos (graças a @muru, @Trengot)xdotool
instalado)fonte
Popen(['/bin/bash',...
vez dePopen(['zenity', '--info', ...
?command = ['zenity', '--info', '--title', 'Area Size', '--text', str(w) + ' x ' + str(h)]; subprocess.Popen(command)
exige muito menos mexer com ,'
e"
eu acho.xdotools
? Algo comocheck_output(['xdotools', 'getmouseposition'])
?Usando slop
Outra maneira simples de determinar a área de uma seleção é usando
slop
(Selecionar Operação), um utilitário de linha de comando "que consulta uma seleção do usuário e imprime a região em stdout".slop
é uma ferramenta comparativamente nova e ainda não foi empacotada para o Debian / Ubuntu. Tal como está, terá de o compilar a partir da fonte:A instalação é a parte mais difícil.
slop
em si é realmente muito fácil de trabalhar. Por exemplo, a seguinte linha única solicitará que você selecione uma área da tela e exibirá o resultado como uma notificação e gravará na área de transferência:Captura de tela:
Uma rápida descrição dos comandos usados:
slop -t 0 -b 1
- solicitar ao usuário que selecione uma área da tela; não selecione janelas completas (-t 0
), defina a borda de seleção como 1px (-b 1
)eval $(...)
- lê a saída deslop
em variáveisnotify-send ...
- envie notificação da GUI com informações sobre a área selecionadaecho ${W}x${H} | xsel -bi
- copiar dimensões para a área de transferência (requerxsel
→sudo apt-get install xsel
)fonte