Tentando entender o que xwd: - faz em converter xwd: -

2

Estou tentando fazer engenharia reversa do seguinte:

xwd -silent | convert xwd:- -depth 8 -crop "1x1+$X+$Y" txt:-

Eu sei que, no final, essa sequência determinará os valores de rgb para um cordinate de tela.

Eu sei que xwd recebe um dump de tela e isso é canalizado para o comando de conversão.

Eu nunca vi nada como xwd:- e txt:- antes. O que os xwd:- e txt:- fazem? Você pode dar um link para mais informações sobre esta sintaxe bash?

Obrigado

    
por BASH 08.08.2016 / 21:50

1 resposta

3

  

O que o xwd: - e txt: - faz? Você pode dar um link para mais   informações sobre esta sintaxe bash?

Só para esclarecer, não é a sintaxe bash. Esses são parte da sintaxe do convert.

xwd:- informa convert para obter sua entrada de stdin, onde - significa stdin e espera que a entrada esteja no formato xwd .

txt:- informa convert para enviar sua saída para stdout, onde - significa stdout e para enviar a saída em txt format.

Mais detalhes

  • xwd -silent

    Isto captura uma janela X como uma imagem e envia essa saída para stdout no formato XWD. Por padrão, xwd toca os sinos quando a captura da janela é iniciada e termina. -silent diz para ficar quieto.

  • convert xwd:- -depth 8 -crop "1x1+$X+$Y" txt:-

    Isso usa o utilitário convert do ImageMagick. xwd:- diz para aceitar uma imagem no formato XWD no stdin. -depth 8 diz para converter a imagem em profundidade 8. -crop "1x1+$X+$Y" diz para recortar a imagem em um único pixel no local X e Y . txt:- diz para enviar informações sobre esse pixel em formato de texto para stdout.

Para entender a saída txt , vamos ver um exemplo. Aqui está a saída de cortar uma imagem para um tamanho de 2 pixels por 2 pixels:

$ xwd -silent | convert xwd:- -depth 8 -crop "2x2+200+200" txt:-
# ImageMagick pixel enumeration: 2,2,255,srgb
0,0: (255,255,255)  #FFFFFF  white
1,0: (255,255,255)  #FFFFFF  white
0,1: (255,255,255)  #FFFFFF  white
1,1: (255,255,255)  #FFFFFF  white

Como você pode ver, cada pixel é identificado por sua localização na imagem recortada, sua cor RGB em dois formatos e, quando disponível, o nome comum da cor.

Mais exemplos

Um arquivo jpeg pode ser convertido para png usando uma sintaxe similar:

cat out.jpg | convert jpg:- png:- >out.png

Naturalmente, em um exemplo simples, o pipeline é supérfluo. O acima pode ser simplificado para:

convert jpg:out.jpg png:out.png

Além disso, se o formato do arquivo não for especificado, convert adivinhará a partir das extensões de arquivo. Portanto, para arquivos com extensões de arquivo reconhecíveis, o seguinte também funciona:

convert out.jpg out.png

Documentação

Executar convert sem argumentos produz uma mensagem de ajuda. No final da mensagem de ajuda, há uma explicação sobre o significado de xwd:- e txt:- :

  

Por padrão, o formato da imagem de 'arquivo' é determinado por sua mágica   número. Para especificar um formato de imagem específico, preceda o nome do arquivo   com um nome de formato de imagem e dois pontos (ou seja, ps: image) ou especifique o   tipo de imagem como o sufixo do nome do arquivo (ou seja, image.ps). Especifique 'arquivo' como   '-' para entrada ou saída padrão.

    
por John1024 08.08.2016 / 22:17