#5 전자액자 프로젝트 - 따라하기

2022. 3. 21. 01:58IT

재택근무 중이던 금요일 오후, '전자앨범을 만들어 볼까?'해서 만든게 일요일 밤, 월요일 새벽 끝이났다. 이것저것 다듬어야 할 것들이 있지만 당장 사진을 보는데 문제가 없으므로 일단은 두기로 했다. NAS 서버를 스캔해 보면 5만장의 사진이 있음을 알게 되었다. 직접 카메라를 들고 내가 찍은 사진부터 예전 핸드폰으로 찍어 놓은 사진을 백업해 놓은것까지다.
연도별 폴더를 만들고 그 아래에 백업한 날짜와 제목을 같이 써 놓았는데 2000년 부터다. 결혼하고 얼마 되지 않아서 디지털 카메라를 샀고 200만 화소였을 것이다.




그래서 완성한 전자액자는 라즈베리파이와 작은 모니터를 연결해 놓고, 전원이 들어오면 자동으로 프로그램이 실행된다. 프로그램이 실행 될 때마다 NAS에 있는 모든 파일들을 스캔해서 텍스트 파일로 만든다. 그리고 랜덤으로 사진을 골라서 보여준다. 그리고 사진 하단에는 사진을 읽어온 폴더와 파일명, 그리고 사진에 들어 있는 날짜 정보를 초록색으로 넣었다.
시작될 때마다 사진 리스트를 만드는 이유는 새로운 사진이 추가될 경우를 대비해서이다. 그러니 새로운 사진을 NAS에 복사해 넣고 라즈베리파이에 전원을 뺏다가 올리면 자동으로 스캔을 하게 되는 것이다. 사진이 삭제 될 경우는 프로그램에서 사진 파일이 있는지 없는지를 검사하기 때문에 문제가 되지 않는다. 테스를 돌리다보니 영 보여주고 싶지 않거나 이상한 사진들이 많아서 그걸 정리하는게 더 어려울 것 같다.

이번 5회에는 따라하는 과정을 기회가 된다면 다음차수에는 프로그램 설명을 해 보고자 한다.

라즈베리파이를 처음 사용하는 분이라면 다음을 참고해서 라즈베리파이를 부팅가능하도록 OS를 설치해야 한다.
라즈베리파이에 대한 소개부터
https://sohyemin.tistory.com/312

#3/28 [매직미러 HowTo] / 스텝 0

무엇이 필요할까? 라즈베리파이: 신용카드 크기의 컴퓨터 그림2. 라즈베리파이 1세대 (위키백과사전)   라즈베리파이라는 소형 컴퓨터는 영국의 라즈베리파이 재단이 만들었습니다. 학교와 개

sohyemin.tistory.com


다음은 라즈베리파이 연결해보기
https://sohyemin.tistory.com/313

#4/28 [매직미러 HowTo] / 스텝 0

라즈베리파이 첫 연결   이 프로젝트를 위해서 주문한 재료들이 하나 둘 씩 도착을 하고 있습니다. 모니터는 휴대용을 주문 했습니다. 라즈베리파이를 제 컴퓨터로 사용해도 될 것 같다는 생각

sohyemin.tistory.com


라즈베리파이 운영체제 설치하기
https://sohyemin.tistory.com/314

#5/28 [매직미러 HowTo] / 스텝 1

스텝 1. 렛츠 스타트   여기에서는 처음 접하는 라즈베리파이를 컴퓨터로 사용할 수 있는 환경을 만들어 주고 아주 기본적인 매직미러를 설치해 볼 예정입니다. 생명 불어 넣기   라즈베리파

sohyemin.tistory.com


맥에서
https://sohyemin.tistory.com/315

#6/28 [매직미러 HowTo] / 스텝 1

맥에서 이미지 굽기 툴 다운로드   맥에서는 “BalenaEtcher”라는 툴을 사용하기로 했으니 프로그램을 다운로드 받기 위해서 [그림17]에 있는 https://www.balena.io/etcher/를 방문하여 macOS용 프로그램을

sohyemin.tistory.com



윈도우에서
https://sohyemin.tistory.com/316

#7/28 [매직미러 HowTo] / 스텝 1

윈도우에서 이미지 굽기 그림 23. 라즈베리파이 홈페이지 (https://www.raspberrypi.org/)   이번에는 윈도우에서 라즈베리파이의 OS를 굽는 작업을 해 보도록 하겠습니다. [그림23]과 같이 라즈베리파이

sohyemin.tistory.com



마지막으로 설정하기
https://sohyemin.tistory.com/317

#8/28 [매직미러 HowTo] / 스텝 1

라즈베리파이 설정하기   익숙치 않은 리눅스 계열의 라즈베리파이 OS를 사용하게 됩니다. 일부 명령어를 직접 타이핑 해야 하는 부분이 있습니다만 크게 어렵지는 않습니다. 새로운 시스템에

sohyemin.tistory.com


여기까지 끝이났다면 작은 컴퓨터가 하나 생긴 샘이다. 많이 익숙하지 않을법한 리눅스 컴퓨터다. 이 다음부터는 라즈베리파이에서 작업을 해야 한다. 물론 윈도우에서 해도 되긴한다. 하지만 윈도우는 약간 git 등을 사용하는 방법이 다르니 구글링을 통해서 어러운 부분은 해결하시길 바란다. 아래의 소스코드는 맥과 라즈베리파이에서 모두 검증을 했다.

다음으로는 만들어진 소스코드를 다운로드 받아야 한다.
github라는데 이미 올려져 있고, 그 주소는 다음과 같다.

https://github.com/sohyemini/photoalbum.git

GitHub - sohyemini/photoalbum

Contribute to sohyemini/photoalbum development by creating an account on GitHub.

github.com


보조프로그램에서 터미널을 열고 다음과 같이 폴더를 하나 만든다음에 위에 있는 github에서 소스 파일을 받아온다.
간단한 명령으로 소스코드를 받아 올 수 있다.


다음은 python3를 설치해야 한다.
커맨드 창에서 다음과 같이 입력해서 python3를 설치할 수 있다.

sudo apt-get install python3


Python이 설치가 된 이후에는 추가로 라이브러리 하나를 설치했던 것으로 기억하는데 다음과 같이 터미널에서 입력을 하면 된다.

pip install exifread
   -  혹은   -
pip3 install exifread


라즈베리파이에서 개발이라는 메뉴를 보면 Mu라는 프로그램이 있는데 이 프로그램을 이용해서 main.py를 수정하면 된다. 그리고 직접 실행을 해 볼 수도 있다. main.py를 보면 맨 윗부분에 다음과 같은 코드들이 있다.

import os
import tkinter as tk
from tkinter import *
from PIL import ImageTk
from time import sleep

from PhotoFile import Photo

DATA_FILE_NAME  = "photolist.txt"
PHOTO_FILE_PATH = "/Volumes/rickykwak/Photo/Original"
DURATION        = 5

class PhotoFrame(tk.Tk):
    def __init__(self, window=None):
        super().__init__()


위의 코드 중에서 수정을 해야 할 것은

PHOTO_FILE_PATH이다. 내 사진이 있는 경로를 나타낸다. 나처럼 NAS에 있는 사진 폴더를 라즈베리파이와 연결해서 보여줄 수도 있고 직접 사진을 라즈베리파이에 복사해 넣어도 되고, USB나 외장하드에 넣어 라즈베리파이와 연결을 해도 무방하다. 여기에 정확한 주소만 넣으면 된다.

그리고 DURATION의 숫자값은 초 단위 숫자로 몇초마다 새로운 사진을 보여줄 것인지를 정하는 숫자다. 이 두 개의 라인을 원하는대로 변경을 하고 Mu에 있다면 실행을 바로 눌러도 되고 터미널에서 소스코드 다운로드 받은 곳으로 가서

python3 main.py

와 같이 입력을 하면 실행이 된다.

내 경우에는 5만여개의 사진이 있어 프로그램 초기에 사진파일리스트를 만드는데 3분정도가 소요된다. 그 동안 Mu에서는 하단에 사진파일 jpg가 쭉 나타난다. 하지만 커맨드창에서 python3 main.py로 실행을 한 경우에는 아무것도 화면에 나타나지 않는 시간이 3분 정도 걸린다.

프로그램을 자동으로 실행하기 위해서는 pm2라는 솔루션을 사용을 했다. 다만 만든 프로그램을 중간에 빠져나오는 루틴을 만들지 않았기 때문에 완성도를 높인 후에 pm2를 사용하면 좋겠다. pm2를 사용하는 방법에 대해서는 다음을 참고하면 된다.

https://sohyemin.tistory.com/336

#22/28 [매직미러 HowTo] / 스텝 3

옵션설정하기 자동으로 꺼지지 않는 화면   매직미러를 한동안 켜 놓게 되면 자동으로 화면이 꺼지게 됩니다. 기본 설정이 되어 있는 화면 보호 또는 전원 절약 기능이겠죠. 설정을 통하면 꺼

sohyemin.tistory.com


상기 링크에서 나오는 mm.sh는 다음과 같이 만들면 된다.

cd ~/main.py가 있는 경로
python3 main.py


그리고 mm.sh가 있는 곳의 커맨드창에서 다음과 같이 입력해서 실행할 수 있는 파일로 변경을 해준다. 이 파일을 실행하기 위해서는
./mm.sh
와 같이 입력을 해서 실행을 한다.

chmod 755 mm.sh


mm.sh와 pm2까지 설정이 끝난다면 어떤 이유에서 프로그램이 종료되거나 라즈베리파이가 켜지면 자동으로 이 프로그램이 실행된다. 실해잉 될 때마다 파일리스트를 만들므로 파일의 개수에 따라서 스캔하는 시간이 걸리게 된다.

반응형