Tirar screenshot de uma área específica da linha de comando

3

Estou executando o desktop Lubuntu 12 e estou procurando uma ferramenta que possa tirar screenshots de uma determinada área da linha de comando.

Eu experimentei o Shutter. Funciona mas quando executo o comando gera avisos ( Wnck-WARNING **: Unhandled action type ). Eu acho que a ferramenta pode ser projetada para rodar sob o GNOME e pode não ser compatível com o Lubuntu. A captura de tela é feita com sucesso, mas o comando trava, algo com o qual não posso trabalhar.

Então, o que é uma boa ferramenta de captura de tela?

  1. Executa a partir da linha de comando
  2. Pode capturar uma determinada área da área de trabalho

Eu gosto de acrescentar que scrot , a ferramenta Lubuntu vem com, não tem a opção de cortar certas coordenadas, mas apenas uma área interativamente definida pelo usuário que não é o que eu estou procurando.

    
por AL-Kateb 14.02.2015 / 17:21

4 respostas

6

No Lubuntu, você pode fazer exatamente o que você quer: faça uma captura de tela a partir da linha de comando com o comando:

scrot_extended 100 100 400 400

usando o script abaixo.

Os quatro argumentos são <x>, <y>, <width>, <height> .
Eu não tive a chance (ainda) de testá-lo em Lubuntu 12.04 , mas parece improvável que não funcione; Ele usa python 2 e ferramentas básicas de linha de comando que já existem há muito tempo.

Explicação

O script:

  • tira uma captura de tela com scrot
  • salva em um arquivo temporário
  • usando imagemagick , cria uma nova imagem, cortando a captura de tela, com os argumentos em que você executou o script com
  • a imagem é salva em um diretório como um arquivo numerado, para evitar sobrescrever

Como usar

  1. O script usa scrot e imagemagick . scrot deve estar no seu sistema. Para instalar o imagemagick:

    sudo apt-get install imagemagick
    
  2. Copie o script em um arquivo vazio

  3. Por padrão, as imagens são salvas em ~/scrot_images , nomeadas: outputfile_1.png , outputfile_2.png etc. Altere-o se quiser, conforme marcado no script. Observe que, se você alterar o diretório, terá que usar o caminho completo .
  4. Salve o arquivo em ~/bin (crie o diretório, se necessário) como scrot_extended (sem extensão) e torne-o executável .
  5. Faça o logout e volte a usar sua captura de tela com o comando:

    scrot_extended <x> <y> <width> <height>
    

Exemplo:

scrot_extended 100 100 400 400

outputfile:

O script

#!/usr/bin/env python
import subprocess
import os
import sys
# setting default directories / filenames
home = os.environ["HOME"]
temp = home+"/"+".scrot_images"
img_in = temp+"/in.png"
# if you prefer, you can change the two line below:
output_directory = home+"/"+"scrot_images" # output directory
filename = "outputfile"                    # filename
# creating needed directories
for dr in [temp, output_directory]:
    if not os.path.exists(dr):
        os.mkdir(dr)
# creating filename (-number) to prevent overwriting previous shots
n = 1
while True:
    img_out = output_directory+"/"+filename+"_"+str(n)+".png"
    if os.path.exists(img_out):
        n = n+1
    else:
        break
# reading arguments,arranging commands to perform
coords = sys.argv[1:5]
cmd1 = ["scrot", img_in]
cmd2 = ["convert", img_in, "-crop", coords[2]+"x"+coords[3]+"+"+coords[0]+"+"+coords[1], "+repage", img_out]
# Take screnshot, crop image
for cmd in [cmd1, cmd2]:
    subprocess.call(cmd)
    
por Jacob Vlijm 15.02.2015 / 11:07
1

Usando maim

Visão geral

maim (make image) é um novo utilitário de captura de tela projetado como uma versão aprimorada de scrot .

Um dos muitos recursos novos que o maim oferece é o suporte para configurar uma área de captura de tela diretamente da CLI. A sintaxe funciona da seguinte maneira:

maim -x <x-coordinate> -y <y-coordinate> -w <width> -h <height>

por exemplo:

maim -x 100 -y 100 -w 400 -h 400

Instalação

maim ainda não chegou aos repositórios oficiais e também não faz parte de nenhum PPA. Você terá que compilá-lo a partir do código-fonte para instalá-lo.

Depois de se certificar de que todas as dependências estão satisfeitas ...

sudo apt-get install build-essential cmake
sudo apt-get install libimlib2-dev libxrandr-dev libxfixes-dev

... podemos prosseguir com a compilação e instalação reais:

git clone https://github.com/naelstrof/maim.git
cd maim
cmake ./
make && sudo make install

É isso. Agora você deve poder chamar maim do seu terminal. Por favor, confira a documentação ( maim --help ) para todas as opções disponíveis; e confira slop , um utilitário do mesmo desenvolvedor que permite selecionar interativamente a área da captura de tela.

    
por Glutanimate 21.02.2015 / 04:17
1

Vincule um script bash que implemente scrot e imagemagick em um atalho de teclado

Isso faz quase o mesmo que resposta de Jacob Vlijm , mas com o bash. Ele nomeia os arquivos usando um registro de data e hora para evitar a substituição de arquivos existentes. Ele também permite que você defina os parâmetros de corte padrão no script, de modo que não seja necessário chamá-lo com nenhum parâmetro.

Chame o script abaixo da seguinte forma (supondo que você esteja no diretório em que o script está armazenado, caso contrário, o caminho completo para o script é obrigatório):

  • Com parâmetros: ./screenshot.sh $left_px $top_px $width_px $height_px OR
  • Sem parâmetros: ./screenshot.sh , nesse caso, os parâmetros padrão especificados no script são usados.

1) Instale os aplicativos necessários

Na linha de comando, execute:

sudo apt install scrot imagemagick

2) Crie o script

Abra seu editor de texto de sua escolha e crie um novo arquivo de texto plano com o seguinte conteúdo. Certifique-se de modificar as variáveis na parte superior para especificar onde deseja salvar as imagens e qual parte da tela você deseja cortar. Veja este truque para obter as coordenadas do mouse que podem ser usadas para encontrar left e top e para calcular width e height .

#!/bin/bash

# Change these values to match your preferences
imageQuality=100    # scrot default is 75
screenshotDir="/tmp"    # directory in which to save screenshots
imageName="$(date +%Y-%m-%d.%H:%M:%S.%N).jpg"   # save image names as timestamp
default_left=10     # begin crop this number of pixels from the left of the image
default_top=10      # begin crop this number of pixels from the top of the image 
default_width=100   # crop this many pixels wide
default_height=100  # crop this many pixels tall

#Do not make any more changes from here down unless you know what you're doing
l=; t=; w=; h=
left=${l:=$default_left}
top=${t:=$default_top}
width=${w:=$default_width}
height=${h:=$default_height}
imagePath="$screenshotDir/$imageName"

[ ! -d "$screenshotDir" ] && mkdir -p "$screenshotDir"
scrot -q $imageQuality "$imagePath"
convert "$imagePath" -crop ${width}x${height}+${left}+${top} "$imagePath"

Salve este script onde quiser e torne-o executável. Supondo que você nomeou seu script screenshot.sh , você faria isso na linha de comando da seguinte forma:

chmod +x /path/to/your/script/screenshot.sh

3) Ligue este script a um atalho de teclado (opcional)

Siga as instruções encontradas aqui para criar um atalho de teclado personalizado. Quando você chegar ao ponto em que deveria inserir o comando, coloque o caminho completo para o arquivo screenshot.sh (incluindo o nome do arquivo).

    
por b_laoshi 12.06.2017 / 04:19
0

De acordo com este documento na wiki aqui: link xfce4-screenshooter é um dos aplicativos de captura de tela para essa distro. Na minha configuração do XFCE, o seguinte comando faz o que você está pedindo.

xfce4-screenshooter
    
por Dave 14.02.2015 / 19:42