Raspberry Pi Slideshow

I have been trying to get the Pi to show a simple slideshow. It is not difficult, but getting it just right is proving a little more complex. So far I have successfully used fbi which will display images well on the framebuffer (no X needed) which is quite a good solution. However, I want control of the DPMS functions of the monitor so I can turn it on and off at certain times. This seems like it should be possible using fbset or similar but I haven’t got around to trying that yet.

The next iteration was to use X and an image viewer. I tried eog which was OK but too resource hungry. Right now it is running using xscreensaver and the ripple plugin with all the effects turned off. Kind of a hack I know, but it does work decently. It even allows me to input a flickr RSS feed as the source and it will pull images from there.

Being the greedy user that I am I would like some movement in the slideshow, a Ken Burns type effect perhaps (which I could enable or disable). glslideshow could give me this, but it won’t run on the Pi’s GLES implementation. Boo.

Anyways, once I have a working satisfactory solution I will be posting the code and steps involved in the coding section of this site.

UPDATE:

You can see the code I use to fetch images from email and convert them for display by FBI.

In order to install fbi:

sudo apt-get install fbi

The actual code I use to run the slideshow is put into /etc/rc.local

fbi -m "1920x1080-60" --autoup -u -t 10 -noverbose -readahead -blend 2 -d /dev/fb0 -T 2 /home/pi/slideshow/*.jpg
This entry was posted in Raspberry Pi, Technology and tagged , . Bookmark the permalink. Post a comment or leave a trackback: Trackback URL.

8 Comments

  1. Dan
    Posted October 1, 2012 at 11:13 am | Permalink

    Hi there,
    have you made any progress on this? I’m looking to do the exact same thing. Closest I’ve come is to use XBMC’s slideshow screensaver. Runs buttery smooth, but unfortunately, due to an XBMC memory leak, it runs less than 24 hrs before hanging.
    Cheers,
    Dan

    • admin
      Posted October 1, 2012 at 11:16 am | Permalink

      Yes, I have settled on using FBI. I have coded a method for the frame to check a POP3 account, download, convert and randomize the images. I don’t have fancy effects on slide changes, but it is very smooth and reliable. I will be finalizing the project soon (I found a VESA mount for my 23 inch monitor I am using), and will post my simple bash scripts and setups to the code section once it is done… I’ll try and get some more pics as well.

  2. Posted October 11, 2012 at 11:42 pm | Permalink

    I’m also really interested in this. I have a client that wants to have her external hard drive images run a slideshow on her TV when she’s not using it. Looking forward to seeing the code!

    Thanks.

    • admin
      Posted October 12, 2012 at 10:15 am | Permalink

      I have updated the post with the FBI command line, as well as a little method for fetching images from email and preparing them.

      • Brendan
        Posted October 12, 2012 at 12:35 pm | Permalink

        Awesome! Thanks very much, she’ll be happy to know it will be ready when her Pi arrives :)

  3. John
    Posted February 24, 2013 at 2:48 am | Permalink

    Hi I have done a pretty similar set up. I mounted photo share from my media center pc and am using fbi as a dedicated photo frame slideshow. I was wondering if you had ever stumbled across a way to do the “fancy transitions”? It the only thing I’m missing!

  4. Posted April 22, 2013 at 4:05 am | Permalink

    Thanks for posting this. I fought the same fights (XBMC keeps crashing, xscreensaver/glslideshow will not run, but I managed between this blog and http://themanbehindthecode.com/2013/03/29/raspberry-pi-slideshow I managed to get it working. I used FIM like this

    I call from /etc/rc.local

    /home/pi/bin/slideshow.sh >> /home/pi/.fim.log 2>&1

    vi crontab -e I run this once a night (at 5am):

    0 5 * * * find /home/pi/Images/ -type f > /home/pi/.imagelist

    /home/pi/bin/slideshow.sh:
    #!/bin/bash
    # Lets start and restart the slideshow if needed
    until cat /home/pi/.imagelist |shuf | sudo fim -a -E /home/pi/.fim_script – >> /home/pi/.fim.log; do
    echo “Slideshow crashed with exit code $?. Restarting…” >> /home/pi/.fim.log
    sleep 2
    done

    and /home/pi/.fim_script :
    while(1){next;display;system “sleep 15s”;}

    The FIM script originally called the internal sleep command but it kept going full speed. I am not sure if that is the lack of a onboard clock or not. It does seem to over-stretch some of my images (older digital images). the advantage of the 3 scripts is I can kill the process and it reloads the new scripts.

    Currently the processor is running near 0.00 which is much better than XBMC (1.00 – 3.00). This is one advantage of staying away from X.

    I have not added any transition effects, but it seems possible.

    It is unfortunate that it appears the debian/ARM version of FIM is old, as it has a slideshow feature it in now.

  5. Jeremy
    Posted May 9, 2013 at 12:13 am | Permalink

    I like the simplicity of your approach. I’ve considered attempting to patch (rewrite?) glslideshow to use OpenGL ES, but that sounds like a larger undertaking than I’d like.

    What happens to your setup here when fbi gets to the end of images? Since you’re continually adding new ones, does it auto refresh somehow, or do you just relaunch fbi in a loop?

Post a Comment

Your email is never published nor shared. Required fields are marked *

*
*

You may use these HTML tags and attributes <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>