The Pictureframe

I had the idea to mount a screen in our living room to display our images from your world-tour. I did not want to spend too much money and for a test I used an old screen I have around.

Initially I tried with an “old” Lenovo SL500 laptop running Ubunut 20.04. I tried many picture viewers as I wanted to have a smooth transition between the images. I had an old Raspberry Pi around, but soon I figured out that that this was really too old, as I was not able to upgrade the release to a current version. With that I’ve order a Raspberry 4 with 4GB of RAM.

I found a genius who did all this already.. Wolfgang Männel from https://www.thedigitalpictureframe.com/ . He runs a blog where he explains everything step by step and this was really helpful.

So I installed the latest Rasparian (https://www.raspberrypi.org/downloads/) from the main Rasberrypi.Org site.

Then I installed Pi3D, this brings a nice little script which will be our picture-viewer. I followed the instructions from Wolfgang to set up everything as required.

After no time, I was able to view my pictures!

I wanted to do some little modifications to my show:

  • New image every 60s
  • Smooth fade of 10s
  • Shuffle all pictures at start
  • Shuffle again once all have been on display
  • Enable the keyboard, to cancel the show if needed (I’m still in development mode…)

This is what I ended up with

 

Material:

 

Add-On’s

I use PiHelper, to turn on/off the screen, as we don’t want the screen to run during our meals 😉

 

NextsSteps and ideas

  • Larger 4k screen
  • Display the current time on the screen
  • Display the City/Location on the screen based on exif data of the image

 

My PictureFrame.py settings:

#####################################################
# these variables are constants
#####################################################
PIC_DIR = '/home/pi/Pictures/AllPictures'
FPS = 20
FIT = True
EDGE_ALPHA = 0.125 # see background colour at edge. 1.0 would show reflection of image
BACKGROUND = (0.2, 0.2, 0.2, 0.6)
RESHUFFLE_NUM = 1 # times through before reshuffling
FONT_FILE = '/home/pi/pi3d_demos/fonts/NotoSans-Regular.ttf'
#FONT_FILE = '/home/patrick/python/pi3d_demos/fonts/NotoSans-Regular.ttf'
CODEPOINTS = '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ., _-/' # limit to 49 ie 7x7 grid_size
USE_MQTT = False
RECENT_N = 1 # shuffle the most recent ones to play before the rest
SHOW_NAMES = False
CHECK_DIR_TM = 300.0 # seconds to wait between checking if directory has changed
#####################################################
BLUR_EDGES = False # use blurred version of image to fill edges - will override FIT = False
BLUR_AMOUNT = 12 # larger values than 12 will increase processing load quite a bit
BLUR_ZOOM = 1.0 # must be >= 1.0 which expands the backgorund to just fill the space around the image
KENBURNS = False # will set FIT->False and BLUR_EDGES->False
KEYBOARD = True # set to False when running headless to avoid curses error. True for debugging
#####################################################
# these variables can be altered using MQTT messaging
#####################################################
time_delay =60.0 # between slides
fade_time = 10.0
shuffle = True # shuffle on reloading
date_from = None
date_to = None
quit = False
paused = False # NB must be set to True after the first iteration of the show!