Área de transferência para imagens

1

Muitas vezes leio algum texto com imagens e muitas vezes acontece que o texto fala sobre uma imagem que está na próxima página e na próxima página e na página anterior e eu tenho que voltar e avançar e geralmente esqueço onde eu parei de ler.

Tive uma ideia para salvar as imagens na área de transferência de imagens, que pode conter cerca de cinco imagens (por exemplo, com uma pequena captura de tela da área da tela). Durante a leitura, quando o texto fala "ver imagem 10.4 (na página 42)" e em alguns segundos "compare com a imagem 10.2 (na página 40)" Eu poderia pressionar apenas o atalho do teclado e selecionar a imagem desejada sem navegar pelo texto.

Isso é possível no X Window System? Ou com algum script?

    
por xralf 04.05.2011 / 18:16

3 respostas

2

Você pode fazer algo com isso ...
Ele permite que você colete imagens (com dois cliques do mouse por imagem) em um diretório temporário, scriptname -c ... e, em seguida, mostra as imagens em um visualizador de imagens leve, que é facilmente navegável através das teclas do cursor; scriptname -s
Ele sempre iniciará a exibição com a imagem mais recente. Se você realmente quiser limita-lo a 5, então você pode ajustar o script, mas eles estão em / tmp, e isso é limpo com razoável frequência.
Apenas atribua scriptname -c e scriptname -s às teclas de atalho de sua escolha. Eu uso xbindkeys para vincular minhas teclas de atalho.

#!/bin/bash
#
# Run $ script  [-c | -s] 
#    
# Uses:  grabc     GRAB Colour - screen pixel colour
#                  Allows you to position amd click the mouse. 
#                  The actual co-ordinates capture is done by xdotool.
#        xdotool   simulate X11 keyboard/mouse input
#        scrot     SCReen shOT - screen capture
#        pnmtopng  (from package 'netpbm') convert format  
#        display   (from package 'imagemagick') display single image  
#        eog        Eye Of Gnome - to display images forward and backwards
#
# Note: The area selection requires two distinct mouse clicks
#       First click the top-left corner, then the bottom-right corner
#       It is not a click-and-drag style of selection.
#

bname="$(basename "$0")"
oudir="/tmp/$USER/$bname"; [[ -d "$oudir" ]] || mkdir -p "$oudir"

case "$1" in 
 -s) # show images
     eog "$(find "$oudir" -maxdepth 1 -type f -name 'screen.20[0-9][0-9]-*.png' \
            |sort |tail -n 1)"
   ;;
  *) # capture image and save to output dir
     grabc 1>/dev/null  2>/dev/null; eval $(xdotool getmouselocation --shell); L=$X; T=$Y
     grabc 1>/dev/null  2>/dev/null; eval $(xdotool getmouselocation --shell); R=$X; B=$Y
     ((R<L||B<T)) && { echo "ERROR: invalid rectangle selected" 1>&2; exit 1; }
     scrot "$oudir/screen.pnm"
     oupic="$oudir/screen.$(date '+%Y-%m-%d %H:%M:%S').png"
          <"$oudir/screen.pnm" pnmcut -left $L -top $T -bottom $B -right $R \
          | pnmtopng > "$oupic"
            display    "$oupic" # for a quick preview.
   ;;
esac
#  
    
por 07.08.2011 / 14:25
1

O X Window System original só possui uma seleção X11, que é apenas texto. Existem várias extensões para implementar uma área de transferência, mas as aplicações que as utilizam não são totalmente compatíveis entre si.

Em vez de usar uma prancheta X11, você pode usar o Gimp como uma prancheta. Você pode iniciar o Gimp e depois disso você pode chamar gimp-remote para carregar uma imagem por exemplo. Você também pode tentar se a função Gimps paste for compatível com o seu aplicativo.

Além disso, você pode iniciar o servidor Script-Fu. A porta padrão é 10008. Depois disso, você pode enviar comandos Script-Fu para o servidor. Por exemplo, isso cria uma nova imagem:

CMD='(gimp-display-new (car (gimp-image-new 300 200 0)))'
echo -e $(printf 'G\0000\%0.4o%s' ${#CMD} "$CMD") | nc -q1 localhost 10008

Essa abordagem exigirá alguma programação adicional para implementar a funcionalidade que você solicitou. Mas deve ser possível.

    
por 06.05.2011 / 15:33
1

xralf perguntou:

I got an idea to save the images to image clipboard
[...]
Is this possible in X Window System?

O manual sobre inimigos do Unix diz

ICCCM compliance is one of the most complex ordeals of implementing X toolkits, window managers, and even simple applications. It's so difficult, that many of the benefits just aren't worth the hassle of compliance. And when one program doesn't comply, it screws up other programs. This is the reason cut-and-paste never works properly with X (unless you are cutting and pasting straight ASCII text)

Aqueles inimigos do Unix têm razão - eu posso imaginar que esse tipo de coisa pode ter contribuído para a Apple optar por não usar o X-windows no OSX.

    
por 09.05.2011 / 00:29