이미지 클립보드

이미지 클립보드

나는 이미지가 포함된 텍스트를 자주 읽는데, 텍스트가 다음 페이지와 다음 페이지, 이전 페이지의 이미지에 대해 이야기하는 경우가 종종 발생하며, 앞뒤로 이동해야 하고 일반적으로 읽기를 멈췄던 부분을 잊어버립니다.

약 5개의 이미지를 포함할 수 있는 이미지 클립보드에 이미지를 저장하는 아이디어가 있습니다(예: 화면 영역의 작은 스크린샷 만들기). 읽는 동안 텍스트에 "그림 10.4(42페이지) 참조"라고 표시되고 몇 초 내에 "그림 10.2(40페이지)와 비교"가 표시되면 텍스트를 탐색하지 않고도 키보드 단축키를 누르고 원하는 이미지를 선택할 수 있습니다.

X 윈도우 시스템에서 이것이 가능합니까? 아니면 일부 스크립트를 사용합니까?

답변1

이것으로 뭔가를 할 수 있을 것입니다.
임시 디렉토리에 이미지를 수집할 수 있으며(이미지당 두 번의 마우스 클릭) scriptname -c...탐색으로 쉽게 수행할 수 있는 경량 이미지 뷰어에 이미지를 표시할 수 있습니다. 커서 키는 scriptname -s
항상 최신 이미지로 표시되기 시작합니다. 실제로 5개로 제한하고 싶다면 스크립트를 조정할 수 있지만 스크립트는 /tmp에 있으며 종종 삭제됩니다. 선택한 단축키에 및 를 할당하기
만 하면 됩니다 . 단축키를 바인딩하는 데 사용합니다 .scriptname -cscriptname -sxbindkeys

#!/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
#  

답변2

원래 X Window System에는 일반 텍스트인 X11 옵션만 있었습니다. 클립보드를 구현하는 다양한 확장 기능이 있지만 이를 사용하는 애플리케이션은 서로 완벽하게 호환되지 않습니다.

X11 클립보드를 사용하는 대신 Gimp를 클립보드로 사용할 수 있습니다. Gimp를 시작한 다음 gimp-remote를 호출하여 이미지를 로드할 수 있습니다. Gimps Paste 기능이 귀하의 애플리케이션과 호환되는지 확인할 수도 있습니다.

또한 Script-Fu 서버를 시작할 수 있습니다. 기본 포트는 10008입니다. 그런 다음 Script-Fu 명령을 서버에 보낼 수 있습니다. 예를 들어 다음은 새 이미지를 생성합니다.

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

이 접근 방식을 사용하려면 요청한 기능을 달성하기 위해 몇 가지 추가 프로그래밍이 필요합니다. 하지만 그것은 가능해야 합니다.

답변3

크라슬라프가 물었다:

이미지 클립보드에 이미지를 저장하고 싶은 생각이 있습니다.
[...]
X Window System에서 이것이 가능합니까?

유닉스 혐오자의 핸드북설명하다

ICCCM 준수는 X 도구 키트, 창 관리자 또는 간단한 응용 프로그램을 구현할 때 가장 복잡한 과제 중 하나입니다. 너무 어려워서 많은 혜택이 규정을 준수하는 번거로움을 감수할 가치가 없습니다. 한 프로그램이 이를 준수하지 않으면 다른 프로그램이 망가집니다.이것이 X에서 잘라내기 및 붙여넣기가 제대로 작동하지 않는 이유입니다.(직접 ASCII 텍스트를 잘라내어 붙여넣지 않는 한)

Unix를 싫어하는 사람들에게는 일리가 있습니다. 이런 종류의 일로 인해 Apple이 OSX에서 X-windows를 사용하지 않기로 결정하게 될 수도 있다고 생각합니다.

관련 정보