You are here

Creating an Auto Refreshing Slideshow from Eye-Fi Upload

Thomas Boyd's picture
May 18, 2012 - 12:01am

I had an unusual request from a client. They wanted me to photograph a fund-raiser party and have the photos projected onto a screen throughout the event. After doing it, I realized this would be a fun thing to do at parties, workshops, weddings, and other events. 

This is the room where the images were projected.

My first thought was to hand off cards to an assistant and have them make a quick edit in Aperture and then start a simple slideshow. The downside is that the slideshow would be down while that happened.

I decided to use an Eye-Fi card to send images directly to my computer through the Wi-Fi signal. That’s easy enough to do, but all the slideshow options I looked at would not automatically update as new images were added. Aperture, Photo Mechanic, Cover Flow and even the Finder screensaver require the user to select the image and then then start the slideshow.

I found an Applescript that would automatically and periodically refresh the Finder slideshow. But, I had one more requirement. I not only wanted to run this slideshow, I wanted to send the images to a Project in Aperture from an Aperture Hot Folder. And, being the paranoid worry-wart that I am, I also thought it might be good to send the photos to an online sharing site as backup to my backup. 

It turned out to be no problem to send the images to the Aperture Hot Folder and also run the slideshow off the same folder. This way, if I need to make a change to the slideshow, or simply see what was in the folder, I could easily go to Aperture and see what was there. 

Of course, it’s never easy. I was warned the Wi-Fi signal was unreliable during heavy use, so when I saw that organizers were broadcasting their Twitter feed and encouraging guests to tweet, I knew I was in for a bumpy ride. Thankfully, the heavy use was short-lived. By the time the dancing started, everything was rolling along nicely.


Camera Set-up: Since I needed a RAW version of every image in addition to the small jpegs I would transmit to the slideshow, I would need a 1D class camera. In this case I used a Canon 1D Mark IV so I could send the RAW images to a CF card and the small JPEGs to the Eye-fi SD card. Page 57 of the instruction manual details how to set the camera to record RAW to the CF Card and small JPEGs to the SD Card.

Set your Canon 1D to record separately.

Eye-Fi Set-up: The Eye-Fi system is pretty amazing. It will send images to a computer, a phone, an ftp address, and several online services like Flickr, SmugMug, Facebook, etc. Before the images land at their destination, they go through the Eye-Fi system for distribution so it’s no problem to have them sent to more than one recipient. In this case, I set Eye-Fi up to send images to my computer and to a private set on Flickr. One important option is to set the Transfer Mode to Selective Transfer. This requires locking the image on the camera to get it to upload. Otherwise, every image will uploaded and that could be troublesome.

The Transfer Mode pane is where you choose Selective Transfer.

Computer Set-up: The Eye-Fi Center lets you choose which folder you want to send the photos to. Since I wanted the images to be imported into Aperture, I installed an Aperture Hot Folder on the desktop. 

In order to get the Finder screensaver slideshow to play I selected the Aperture Hot Folder as the source for the slideshow in the System Preferences.

Select the Apeture Hot Folder as the source for the Finder screensaver.

The next big problem to solve is to use an Applescript to refresh the slideshow. A blog post on The Gadgeteer had exactly what I was looking for and some good tips as well. When installed it will stop the slideshow and restart it automatically thereby adding the most recent images. You can tell it how many seconds you want it go restart. I set it for 300 seconds (5 minutes). If had to do it all over again, I may set it for half that time. And, since it reveals your desktop when it refreshes, I shot a photo early in the night of a their logo and set it as the desktop image. This worked really well and looked pretty seamless when it refreshed.

Here’s the Applescript (click the first icon to open a window to select the code, and ignore the double endend you see below—that’s a render bug):

 tell application "ScreenSaverEngine" to activate
 delay 300
 tell application "System Events" to key code 59
 delay 2
end repeat

By the end of the night, everyone was having a blast looking up at the photos towering above them as they danced. I had uploaded almost 300 photos to the slideshow from the time they were getting ready to the end when they were dancing. It was a big hit.

Update on May 17, 2012 - 3:10pm by Thomas Boyd

This reminded me of a workflow and article I posted on my photo blog, long before ApertureExpert was born, of another complex, AppleScript related workflow. I just went and cleaned up the formatting so it’s more readable… check out this five-year old post (Jan 2007… goodness): “An impressive use of Aperture and AppleScript”.

Apple Aperture
Thomas Boyd

Very interesting.

Sadly no EyeFi product for a Nikon D3s as it is CF only.

Could use the Nikon Wifi transmitter but that would cost a lot more I suspect. The tiny and very neat wi fi unit for the D4 would work well for this.

Awesome workflow! I would really like to do this on an iPad but can’t figure out how since there’s no finder access. Ideas???


Which part do you want to do on the iPad… you want to shoot on the iPad, or you want to have the iPad running the slideshow?


— Have you signed up for the mailing list?

This is really neat! I have a upcoming event that this could work well at.

As for the eye fi card & iPad, check out f-stoppers video here:…

For the “CF” only cameras (my 5D mkII included):

I love this idea and want to use it at my next event! As you suggested, I think 300 seconds is a bit long so maybe I’ll try halving that. I have my slideshow set (under System Preferences) to not play images randomly, I want them to go in order. After testing this out I noticed that the Screen Saver presents the photos in the same order every time; the oldest shot I took is presented first. Id like the best shots taken in the 150 (300/2) seconds to be shown first instead of repeating the same old shots over and over again during the course of those 150 seconds. Any suggestions other that having the pictures present themselves randomly? Thanks!


This was Thomas Boyd’s post… I’ll let him answer it :)


— Have you signed up for the mailing list?

I noticed this tooI. I don’t have a solution to this other than experimenting with the way the camera names files. But, I haven’t looked into it to or tested it.

If you figure something out please post it here.

There is another way to do this, a little more involved to set up but once done offering a lot more flexibility.

This involves making use of your personal web folder and Apache Server that comes built right in to OS X.

You will need some web code that displays images as slide show within a webpage, which could be blank or instead of blank you could design something with corporate logos for each job etc. I am sure any programmer could write this for you in a couple of minutes. Put this in a folder within your Sites Folder. Make sure the code has an instruction to refresh itself every image.

The above code may well be PHP so you will need to enable the OS to work with it. This page tells you how to do that,
which still holds for Lion. It is very simple.

Now you need to use an Automator workflow or Apple Script to send images at the correct size to the folder you created above and your slide show is ready to view.

To view the slide show, use a web browser on any device that has one and point it at that folder above. You can have multiple systems reading this and playing your slide show at the same time now. If viewing from an iPad, look at something like Kiosk Pro and if you can block access to the home button, then the user will not be able to leave the slide show.

When you add new images to the folder they get included in the slide show and if you delete any from the folder, they no longer play.


That sounds amazing! I don’t suppose you’d like to write that up as a User Tip? Feel free to promote anything for yourself in there if you do. Sounds pretty cool!

— Have you signed up for the mailing list?


I am happy to put something together for user tips but can not divulge the actual code for the slide show as I do not own the copyright to that, though as stated it should not be difficult for a web programmer to write it. I will talk with my guy and see if he is interested in some sort of licensing option.


I have attempted to do a few things with Applescript, Automator and Folder Actions, but unfortunately, they all required a strange workaround, like killing a process.

So, I fired up the most unlikely of tools, Quartz Composer and made a screensaver.

Slideshow will display the last x pictures in any subdirectory, and loop based on a custom duration. As you add new pictures, the older ones play faster and drop off sooner, and the newer ones stay up longer.

This is great and well written. I know nothing about how this all works, but am finding my way with this post. But…I am running into a small issue.

I am using the Applescript, but not Aperture or Eye-Fi. Rather, I am using a tethered camera and Automator to download photos into a regular file as they are taken (from the camera). I would like the most recent image to appear first when the slideshow auto refreshes and restarts. Right now, when it restarts, the first image is the oldest one and it takes a few minutes to reach the most recent image taken (and even longer, if I continue to add images). Are there file settings or an Applescript I can use/change so the slideshow features the most recent images first? I work on Mac OS X.


I’ve been asked to do something similar next weekend and this is the best workflow I’ve found, but I have a few twists I’m wondering if you have any suggestions.

I’ve been given about 100 images as a starting point and am asked to add images I’m shooting to the slideshow as the night progresses. I’d like to not have every image we shoot automatically added to the slideshow, rather I’d like to be able to have an assistant cherry-pick a few and drop them into the slideshow from time to time. Is there a way I can be doing this on one computer while the slideshow still plays to the crowd, updating with the new selects, and they don’t see my workspace interfering with the show ?

As it stands now I was planning on having the images they provide running through a basic slideshow presentation on an old windows based laptop connected to the projector. My 2nd and I will shoot for about 30 minutes then we’d download to a mac mini, we’ll pick out a handful of selects, export to a USB, then plug into the laptop and add them to the slideshow. Lather, rinse, repeat… Works fine so far, but there is a lag time in which the import window will be projected along with the progress bar, etc.. just looks a bit wonky. Suggestions?

Hi This is exactly what i want to do can I do it tethered instead of buying a wifi card. As I will be shooting in a temp studio situation

You may login with either your assigned username or your e-mail address.
Passwords are case-sensitive - Forgot your password?