라즈베리 파이 스크린 샷 - lajeubeli pai seukeulin syas

본격적으로 활동하기 전에 라즈베리 파이안에서 스크릿 샷을 찍을 수 있는 기능이 없습니다.

그래서 이번에 그 기능을 할 수 있는 간단한 방법을 소개해 드리겠습니다.​ 

터미널로 들어가세요

sudo apt-get install scrot

치시면 3초안에 설치가 됩니다.

그러면 터미널 창에 scrot를 치시면 배경이 저장이 됩니다.

확인해보죠

라즈베리 파이 스크린 샷 - lajeubeli pai seukeulin syas

확인을 위해 scrot에 저장되는 폴더를 열어보였습니다.

이제 터미널에서 scrot를 치면

라즈베리 파이 스크린 샷 - lajeubeli pai seukeulin syas

폴더에 스크린샷이 저장되는 것을 볼 수있습니다.

이 방법이 조금은 불편하실 수 도 있습니다.

하지만 그래도 라즈베리에서 화면 캡쳐를 해줄 수 있는 존재라는 점에서 아쉬움 점을 달래야 겠죠.

블로그에 라즈베리파이 관련 캡쳐 이미지를 올리기 위해 scrot을 사용합니다. 

아래 명령어로 설치 할 수 있습니다.

라즈베리 파이 스크린 샷 - lajeubeli pai seukeulin syas

아래 명령어를 사용하면 scrot의 자세한 사용 설명이 나옵니다.

pi@raspberrypi:~ $ man scrot

몇 가지 옵션 중 저는 아래 4개 옵션을 자주 사용합니다.

-u : 현재 포커스된 창을 캡쳐합니다.

-b : border가 같이 선택됩니다. 이 옵션이 없으면 타이틀 부분이 캡쳐가 안됩니다.

-s : 마우스로 선택한 창이 캡쳐됩니다.

-d : 몇 초의 시간지연 후에 캡쳐됩니다.(예. -d 5 : 5초후 캡쳐됩니다.)

라즈베리파이에서 캡쳐를 하려면 터미널에서 명령어를 입력해야 합니다.

개인적으로 이러한 방식이 불편하여 파이썬을 사용하여 간단한 GUI 프로그램을 만들어 보았습니다.

#!/usr/bin/python
#-*- coding: utf-8 -*-

import Tkinter
import subprocess

top = Tkinter.Tk()
top.title("GUI Scrot")
top.geometry("300x150")

def cap1():
   subprocess.call(["scrot"])

def cap2():
   subprocess.call(["scrot", "-s"])

B = Tkinter.Button(top, text ="전체화면", width=50, command = cap1)
B.pack()
B = Tkinter.Button(top, text ="창 선택", width=50, command = cap2)
B.pack()

top.mainloop()

아래는 윗 코드의 실행 화면입니다.

라즈베리 파이 스크린 샷 - lajeubeli pai seukeulin syas

라즈베리파이 3B+에서 테스트된 간단한 동작영상입니다.

  지난 두 포스트 [라즈베리파이 기초] (6) 콘솔 화면 캡쳐, [라즈비안 XBMC] (7) XBMC 화면 캡쳐를 통해서 콘솔 화면과 XBMC 화면을 캡쳐하는 것을 소개했었다. 하지만 XBMC 화면 캡쳐의 경우 비디오 부분이 검은색으로 표시되는 문제가 있었다. 해결책을 찾던중 raspi2png라는 프로그램을 찾게 되었다.

1. Git Clone

  raspi2png를 다운 받기위해서는 크게 두가지 방법이 있다. 하나는 GitHub의 raspi2png 페이지에서 다운로드 받아서 라즈베리파이로 전송하는 방법이다. 하지만 이보다는 Git Clone을 이용하는 것이 라즈베리파이에는 더 적합하다.

  raspi2png 페이지에 가면 https clone url이 https://github.com/AndrewFromMelbourne/raspi2png.git 라는 것을 확인 할 수 있다. 라즈비안 콘솔에서 'git clone https://github.com/AndrewFromMelbourne/raspi2png.git'를 입력 하면 raspi2png라는 디렉토리가 통째로 저장된다.

2. 컴파일

  1번에서 다운로드한 디렉토리 안에 실행파일이 포함 되어 있기 때문에 컴파일을 할 필요는 없지만 필요할 경우도 있으므로 컴파일하는 단계부터 알아보자. 컴파일에 앞서 libpng12-dev가 먼저 설치 되어있어야 한다. 이를 위해 콘솔에서 'sudo apt-get install libpng12-dev'를 입력한다. 설치가 완료되면 'make'를 입력하면 끝! 아래에 보면 raspi2png 파일이 생성된 것을 확인 할 수 있다. 

3. 실행

  실행하는 법도 매우 간단하다. 콘솔에서 './raspi2png'를 입력하면 snapshot.png라는 이름으로 라즈베리파이의 화면이 캡쳐되어 저장된다. -h와 -w와 같이 높이와 너비를 설정할수 있는 옵션도 있고 -p를 이용해서 저장되는 위치와 이름을 설정 할 수 있다. 아래 사진을 보면 XBMC 스크린샷에서는 검게 표시되던 비디오 화면이 아주 잘 캡쳐된 것을 확인 할 수 있다.

라즈베리 파이 스크린 샷 - lajeubeli pai seukeulin syas

4. 스크립트

  이대로 사용해도 되지만 지난번과 마찬가지로 타임스템프를 이용해서 스크린샷 파일 이름을 자동으로 설정하도록 스크립트를 짜보았다. 쉘스크립트 저장하고 사용하는 방법은 [라즈베리파이 기초] (6) 콘솔 화면 캡쳐 5번에서 이미 설명했으므로 참조하기 바란다.

#!/bin/bash DATE=$(date +"%Y%m%d%H%M%S") DIR=/home/pi/Screenshots OPT= pOPT= pFlag=false while getopts ":p:vh:w:t:d:H" opt; do case $opt in p) pOPT="-p $OPTARG" pFlag=true ;; h) OPT="$OPT -h $OPTARG" ;; w) OPT="$OPT -w $OPTARG" ;; t) OPT="$OPT -w $OPTARG" ;; d) OPT="$OPT -d $OPTARG" ;; v) OPT="$OPT -v" ;; H) OPT="$OPT -H" ;; \?) echo "Invalid option: -$OPTARG" >&2 exit 1 ;; :) echo "Option -$OPTARG requires an argument." >&2 exit 1 ;; esac done if $pFlag; then echo "./raspi2png $OPT $pOPT" sudo ./raspi2png $OPT $pOPT else echo "./raspi2png $OPT -p $DIR/$DATE.png" sudo ./raspi2png $OPT -p $DIR/$DATE.png fi

참조 : Andrew 졸라땡큐~