창의 명령을 사용하여 bash 스크립트에서 창을 png로 캡처하고 싶습니다.ID. 이 경우 창은 상단 패널입니다. 사용된 색상은 gnome-screenshot
본 이미지대로 정확합니다... (본 이미지는 아래 이미지와 사이즈가 다르므로 하단의 검은색 선은 무시해주세요)
그런데 캡쳐패널을 거쳐가보니 import
,또는 xwd
+ convert
, 나는 다음과 같은 이미지를 얻습니다 ..
왜 이런 색상 차이가 나는 걸까요?
import
둘 다 convert
패키지에 속합니다 imagemagick
...
우분투 저장소에서 창을 캡처할 수 있는 다른 항목을 찾지 못했습니다.ID...그래서 막혔어요. ( gnome-screenshot
해당 기능이 없습니다.)...여기서 무슨 일이 일어나고 있는지 아는 것이 좋을 것입니다(예:투명한이미지, 저는 그것에 대해 거의 알지 못합니다.)...하지만 어쨌든, 그것은 단지 추천일 뿐입니다해결책캡처 유틸리티는 성공할 수 있습니다. 해당 유틸리티를 통과할 수 있어야 합니다.ID.
다음은 이미지 캡처를 만들고 보는 방법에 대한 예입니다.
import -window "$(wmctrl -l |grep "Top Expanded Edge Panel" |awk '{print $1}')" screen.png
display screen.png
답변1
콘솔에서 화면을 만들기 위한 scrot
. 가방에서 나오는 도구 가 아니기 때문에 imagemagick
색상도 괜찮을 가능성이 있다고 봅니다.
문제가 있습니다. scrot
전체 화면 스크린샷만 촬영할 수 있으므로 전체 화면 스크린샷을 찍은 다음 필요한 창 영역을 잘라냅니다. 물론, 잘라내기 위해서는 imagemagick
가방에 들어 있는 도구 외에는 사용하지 않을 것입니다 netpbm
.
#!/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=\1/p" \
-e "s/^ \+Absolute upper-left Y: \+\([0-9]\+\).*/y=\1/p" \
-e "s/^ \+Width: \+\([0-9]\+\).*/w=\1/p" \
-e "s/^ \+Height: \+\([0-9]\+\).*/h=\1/p" )
scrot scrot.pnm
< scrot.pnm pnmcut -left $x -top $y -width $w -height $h | pnmtopng > scrot_cropped.png
display scrot_cropped.png
scrot
색상이 변경되지 않은 상태로 스크린샷을 만들 수 있는지 확인할 수 있나요 ? 그렇다면 이 스크립트는 작업을 수행하고 원하는 창 화면을 가져와야 합니다.
@fred의 답변에서 영감을 받은 스크립트:정확한 창 크기와 위치(트림 포함)를 어떻게 알 수 있나요?그리고 @JRW:이미지 분할을 위한 Oneliner?