Problema de cor ao capturar um png do painel superior da tela

3

Eu quero capturar uma janela como um png dentro de um script bash, usando o ID da janela. Neste caso, a janela é o painel superior. Usando gnome-screenshot as cores são verdadeiras, de acordo com esta imagem ... (esta imagem não é do mesmo tamanho que a imagem seguinte, então ignore a linha escura na parte inferior)

Noentanto,quandocapturoopainelviaimport,ouxwd+convert,receboaseguinteimagem.

Por que eu estaria recebendo essa aberração de cor?

import e convert pertencem ao imagemagick package ...

Eu não encontrei mais nada no repositório do Ubuntu que possa capturar uma janela pelo seu ID ... então estou preso. ( gnome-screenshot não tem o recurso) ... Seria bom saber o que está acontecendo aqui (por exemplo, é algo a ver com imagens transparentes , das quais sei muito pouco) ... mas, em qualquer caso, apenas uma recomendação de um O utilitário de captura workaround pode fazer o truque ... ele deve ser capaz de capturar uma janela pelo ID .

Aqui está um exemplo de como faço e visualizo a captura de imagens.

import -window "$(wmctrl -l |grep "Top Expanded Edge Panel" |awk '{print $1}')" screen.png  
display screen.png
    
por Peter.O 06.07.2011 / 21:45

1 resposta

1

Para criar telas a partir do console, também há scrot . Como não é uma ferramenta do pacote imagemagick , acho que há uma chance de as cores ficarem bem.

Existe um problema - scrot só pode tirar sceenshot de tela cheia, então faremos a captura de tela cheia e depois recortamos a área da janela que precisamos. É claro que, para cortar, não usaremos imagemagick , mas ferramentas de netpbm package.

#!/bin/bash
unset x y w h
eval $(xwininfo -id $(wmctrl -l |grep "Top Expanded Edge Panel" |awk '{print $1}') |
        sed -ne "s/^ \+Absolute upper-left X: \+\([0-9]\+\).*/x=/p" \
             -e "s/^ \+Absolute upper-left Y: \+\([0-9]\+\).*/y=/p" \
             -e "s/^ \+Width: \+\([0-9]\+\).*/w=/p" \
             -e "s/^ \+Height: \+\([0-9]\+\).*/h=/p" )
scrot scrot.pnm
    < scrot.pnm pnmcut -left $x -top $y -width $w -height $h | pnmtopng > scrot_cropped.png
display scrot_cropped.png

Você poderia verificar se com scrot você poderia criar uma captura de tela com cores inalteradas? Se sim esse script deve fazer o trabalho e tirar a tela da janela que você quer ....

Script inspirado nas respostas de @fred: Como faço para encontrar as dimensões da janela e posição com precisão, incluindo decorações? e @JRW: Oneliner para fatiar uma imagem?

    
por 07.07.2011 / 23:27