Data Blends

Data Science Problem Solving Techniques

Menu

Skip to content
  • Search
  • Explore This Blog
  • The Series
    • Climate Change Quantified
    • Tableau Vs Power BI
    • Data Comprehension
    • The Tableau Data Zone
    • Teaching Tableau
    • My Tableau Voice
    • Math Modeling in Tableau
    • Short Tableau Stories
    • How To Build A Gunite Pool
    • The Joe Mako Collection
    • Blogging Experiment
    • Exiting My Comfort Zone
  • The Deep Dive
  • YouTube
  • Reference Materials
  • Recognitions
  • About
  • Contact

A Tableau-Based Photo Viewer

Kenneth C Black / March 8, 2016

Introduction

I have had an idea for about the past 20 years that I finally decided to complete using Tableau. What took me so long, you ask?  Well, software technology had to catch up with my idea. It took me 20 years to collect the data and about a day to finish the first rendition of the idea.

SONY DSC

Jett Black in his early days.

 

My idea is simple in design. I want to have a tool that can quickly and easily allow me to visualize the lifetime of my kids.  I remember creating this idea in 1996 or so, which is when I got my first Kodak digital camera. I began building the data needed to fulfill my idea by taking and collecting the pictures and videos over many years. It is this collection of digital information coupled with Tableau that allowed me to bring my idea to fruition.

Background on the Idea

Many of us take thousands of digital pictures and videos through the years and store them in directories on hard drives. Some of these pictures and videos will become our favorites. The vision I had 20 years ago was that one day I would be able to pull together the best content into one place to visualize the lifetime of my kids. I always believed that this would become possible. The problem has been that I have never found a software platform that would allow me to do this in a reasonable time.

The Process

You can use a program like Picasa from Google to organize your digital content and to quickly pick your favorites. You can then export the files to a directory so that they are all in one place.

Once you have done that, you have to capture metadata information about the files such as the date and time the photo was taken and some other information about the photos themselves, especially if you want to do some analytics on the files. That seems like it should be easy to do. Well, it isn’t necessarily that easy and that is one of the reasons I’ve decided to write this article.

Fair warning: There is some technical stuff included in the videos that form this article. It took me a few attempts to get the steps right on how to do this. Since the level of detail is high, I decided to make some videos showing how it is done.

I have broken the process down into three videos to explain what you have to do. The first video explains the problem with getting the right date and time stamps from your files when you export them from Picasa. The second video shows you how to use Powershell to extract photo metadata and the correct date and times. The third video shows you my first rendition of my “lifetime photo viewer”.

Considering I did all the work in Tableau in a couple of hours, I’m pretty happy with my progress towards my final goal. I can now see the finish line on this project and the final dashboards for Sarah, Colton, and Jett are going to be totally awesome. I still have more work to do with respect to determining location data of the files and adding some additional content, but right now I’m satisfied with this burst of creativity. Tableau rocks.

Step 1 – A Statement of the Problem


 

Step 2 – Using Powershell to Extract Photo Metadata


 

Step 3 – The Tableau-Based Photo Viewer


 

Download the Tableau Public example shown in this article.


 

Technical Notes

Youtube rendering – You might find that your Youtube video links no longer render in a web page object in Tableau. I have no idea why. However, I found a way to make them work by changing the word “embed” to the letter “v”. I have no idea why this works, it just does. Here is an example:

https://www.youtube.com/embed/6Mary-q_upg  <does not play in Tableau web page>
https://www.youtube.com/v/6Mary-q_upg           <will play in Tableau web page>

WordPress rendering – The videos will not render at this time, although you can see the video by moving the time cursor from left to right. I’ll update this if and when a solution is found.

Where are the pictures stored? – In my example, I uploaded the photos to my WordPress blog site and used those links. I could have also just used my Google photo links if I wanted to. All the files you want to render must be on-line.  Additionally, here is one note on how the file names are handled by WordPress when they are imported. If you have a space in the file name, the space will be replaced by a dash automatically by WordPress.

Powershell sources and example– totally great guys but they live deep in the community called Nerdville.

  1. Getting started with Powershell.
  2. Extracting metadata from photograph files.
  3. The Jett Black metadata script. Make sure you create a subdirectory to hold your photo files within the directory you specify to process. In my case, I used the directory d:\wordpress\jett_black, but the files were stored within the subdirectory titled d:\wordpress\jett_black\images. The two items shown in red below are all that you need to change to make the script run.

    Function Get-FileMetaData
    {
    Param([string[]]$folder)
    foreach($sFolder in $folder)
    {
    $a = 0
    $objShell = New-Object -ComObject Shell.Application
    $objFolder = $objShell.namespace($sFolder)

    foreach ($File in $objFolder.items())
    {
    $FileMetaData = New-Object PSOBJECT
    for ($a ; $a -le 266; $a++)
    {
    if($objFolder.getDetailsOf($File, $a))
    {
    $hash += @{$($objFolder.getDetailsOf($objFolder.items, $a)) =
    $($objFolder.getDetailsOf($File, $a)) }
    $FileMetaData | Add-Member $hash
    $hash.clear()
    } #end if
    } #end for
    $a=0
    $FileMetaData
    } #end foreach $file
    } #end foreach $sfolder
    } #end Get-FileMetaData

    $picMetadata = Get-FileMetaData -folder (Get-childitem d:\wordpress\jett_black -Recurse -Directory).FullName

    $picMetadata |
    Select ‘Name’,’Date taken’,’Date modified’,size,path,width,height,’camera model’,f-stop,’flash mode’,’iso speed’,’exposure time’,’focal length’ |
    Export-CSV -Path d:\scripts\jett_black_Metadata.csv -NoTypeInformation

The Picture Collage

WordPress has come a long way in its content management system. You can throw a group of pictures together and have them rendered into one big collage as shown below. Can you find baby Kenny in the collage?  If not, just click on the collage and it will be rendered into a slide show. All this is done automatically, with no effort on my part. Great job WordPress developers. This is getting to be fun again!

DSC07011
DSC07536
DSC07752
DSC07458
DSC08621
DSC09232
DSC07356
DSC09381
DSC00432
Baby Jett Black and Daddy Ken Black on Harbor Island, SC, 12/30/11.
Baby Jett Black and Daddy Ken Black on Harbor Island, SC, 12/30/11.
SONY DSC
SONY DSC
DSC09731
DSC07746
20151223_201003
SONY DSC
SONY DSC
SONY DSC
SONY DSC
DSC06750
DSC09278
DSC08189
SONY DSC
SONY DSC
DSC09243
SONY DSC
SONY DSC
SONY DSC
SONY DSC
SONY DSC
SONY DSC
SONY DSC
SONY DSC
20151019_204225
OLYMPUS DIGITAL CAMERA
OLYMPUS DIGITAL CAMERA
OLYMPUS DIGITAL CAMERA
OLYMPUS DIGITAL CAMERA
IMAG0790
20151021_102947
DSC01556
DSC01609
DSC09617
SONY DSC
SONY DSC
IMAG0794
SONY DSC
SONY DSC
DSC04093
DSC07893
SONY DSC
SONY DSC
DSC01414
SONY DSC
SONY DSC
DSC05233
DSC03844
DSC07617
DSC09455 (2)
20151021_102948(0)
DSC06101
20151031_195517(0)
SONY DSC
SONY DSC
Blues_Bros_2
DSC01811
DSC02538
SONY DSC
SONY DSC
SONY DSC
SONY DSC
DSC00097
DSC05226
SONY DSC
SONY DSC
Serious cuteness on the part of the Jett!
Serious cuteness on the part of the Jett!
DSC02103
Day 28 - My Mommy gave me the mohawk. After all, we do have Indian heritage on both sides of my family!
Day 28 – My Mommy gave me the mohawk. After all, we do have Indian heritage on both sides of my family!
DSC_0330

 

Boys, Toys, Head Injuries and the JB Experiment

Sometimes pictures tell the story better than words.

 

Jett meets bed, part 1
Jett meets bed, part 1
Getting bedder, no pun intended
Getting bedder, no pun intended
If you don't like headaches, don't get this surgery!
If you don’t like headaches, don’t get this surgery!
Fun with Playdoh
Fun with Playdoh
Learning the spellings
Learning the spellings

Share this:

  • Click to print (Opens in new window) Print
  • Click to email a link to a friend (Opens in new window) Email
  • Click to share on Facebook (Opens in new window) Facebook
  • Click to share on LinkedIn (Opens in new window) LinkedIn
  • Click to share on Tumblr (Opens in new window) Tumblr
  • Click to share on Pocket (Opens in new window) Pocket
  • Click to share on Pinterest (Opens in new window) Pinterest
  • Click to share on Reddit (Opens in new window) Reddit
  • Click to share on X (Opens in new window) X

Like this:

Like Loading...
March 8, 2016 in Tableau. Tags: dashboards, Jett Black, Metadata, photos, Powershell, Tableau

Related posts

Quantifying How NASCAR Races Have Ended Over Time

Using Alteryx to Perform Analysis of NASCAR Races

Are You Considering Adding Living Space To Your Basement?

Post navigation

← Tableaupedia, Part 1
My General Motors Story →

3 thoughts on “A Tableau-Based Photo Viewer”

  1. Pingback: Using Tableau to Visualize Healing After Skin Cancer (BCC) Surgery | 3danim8's Blog

  2. Pingback: A Dynamic Image and Web Page Viewer Using Tableau | 3danim8's Blog

  3. Pingback: The Times of Our Lives – Via Google Photos | 3danim8's Blog

Leave a ReplyCancel reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Post Types

  • Post (413)
  • Page (25)

Categories

  • Tableau (299)
  • Alteryx (175)
  • Life (128)
  • Big Data (72)
  • Climate Change (37)

Tags

  • Tableau (237)
  • Alteryx (151)
  • Big Data (31)
  • Climate change (30)
  • global warming (26)

Year

  • 2025 (2)
  • 2024 (2)
  • 2023 (7)
  • 2022 (9)
  • 2021 (12)

Find Anything You Want


Easy Navigation

  • Advanced Search or Return to Home
  • Blogging Experiment
  • Climate Change Quantified
  • Data Comprehension
  • Exiting My Comfort Zone
  • Explore This Blog
  • How To Build A Gunite Pool
  • Mapping Information
  • Math Modeling in Tableau
  • My Tableau Voice
  • Recognitions
  • Reference Materials
  • Regular Expressions
  • Search 3danim8's Blog Using Tableau
  • Tableau Vs Power BI
  • Teaching Tableau
  • The Joe Mako Collection
  • The Series
    • Short Tableau Stories
    • The Tableau Data Zone
  • YouTube
  • Tableau Links
  • About
  • The Deep Dive
  • Contact

Other Activities

  • LinkedIn
  • Twitter
  • Facebook
  • Medium
  • Instagram
  • YouTube
  • WordPress
  • WordPress
  • GitHub

Articles By Time

  • March 2025
  • February 2025
  • May 2024
  • December 2023
  • August 2023
  • May 2023
  • January 2023
  • November 2022
  • August 2022
  • June 2022
  • May 2022
  • March 2022
  • February 2022
  • January 2022
  • December 2021
  • November 2021
  • October 2021
  • August 2021
  • July 2021
  • June 2021
  • May 2021
  • January 2021
  • August 2020
  • June 2020
  • May 2020
  • April 2020
  • March 2020
  • January 2020
  • November 2019
  • October 2019
  • August 2019
  • July 2019
  • June 2019
  • April 2019
  • March 2019
  • February 2019
  • January 2019
  • December 2018
  • November 2018
  • October 2018
  • September 2018
  • August 2018
  • July 2018
  • June 2018
  • May 2018
  • April 2018
  • March 2018
  • February 2018
  • January 2018
  • December 2017
  • November 2017
  • October 2017
  • September 2017
  • August 2017
  • July 2017
  • June 2017
  • May 2017
  • April 2017
  • March 2017
  • February 2017
  • January 2017
  • December 2016
  • November 2016
  • October 2016
  • September 2016
  • August 2016
  • July 2016
  • June 2016
  • May 2016
  • April 2016
  • March 2016
  • January 2016
  • December 2015
  • November 2015
  • October 2015
  • September 2015
  • August 2015
  • July 2015
  • June 2015
  • May 2015
  • April 2015
  • March 2015
  • February 2015
  • January 2015
  • December 2014
  • November 2014
  • October 2014
  • September 2014
  • August 2014
  • July 2014
  • June 2014
  • May 2014
  • April 2014
  • March 2014
  • November 2013
  • October 2013
  • September 2013
  • August 2013
  • July 2013
  • June 2013
  • May 2013
  • July 2011
  • August 2009


Proudly powered by WordPress | Theme: Expound by Konstantin Kovshenin
 

Loading Comments...
 

    %d