- Hello and welcome to Code Clinic. My name is David Powers. Code Clinic is a monthly course, where a unique problem is introduced to a collection of lynda.com authors. In response, each author creates a solution using their programming language of choice, mine is PHP. You can learn several different things from Code Clinic. Different approaches to solving a problem, the pros and cons of different languages, and some tips and tricks to incorporate into your own coding practices.
This month, the problem combines two concepts: recursion and accessing image data. Recursion means to repeat something in a similar way. In programming, recursion means a function will actually call itself, nesting a call to a subroutine within a call to the same subroutine. You might find this type of code pattern in the code samples you're about to see. Although some languages might have structures that handle recursion automatically.
JPEG files can contain additional image data stored as Exif or IPTC. Exif stands for exchangeable image file format and is a well-documented standard. If you have a digital camera or have taken photos with a newer smartphone, the image probably has Exif data available. IPTC was developed by the International Press Telecommunications Council. The standard was adopted by Adobe Photoshop, and it's widely used by stock photo agencies to embed information about images.
You can see this metadata information on a Mac by opening the image in Preview and going to Tools, Show Inspector and selecting the Exif or IPTC tab. On Windows, you can see the metadata by Right-Clicking an image, selecting Properties, and the Details tab. You'll see things like caption, dimensions, camera type, color space, exposure Information, and other details. Cell phones will also embed geographic location data, identifying the longitude and latitude.
The challenge is to look through the example files included with Code Clinic, find images, extract the caption from the metadata. Then reorganize those photos into an alphabetical folder structure based on the caption. As always, you may want to take some time to solve the problem yourself. In the next videos, I'll show you how I solve this challenge.
Author
Updated
12/16/2014Released
7/15/2014David introduces challenges and provides an overview of his solutions in PHP. Challenges include topics such as statistical analysis, searching directories for images, and accessing peripheral devices.
Visit other courses in the series to see how to solve the exact same challenges in languages like C#, C++, Java, Python, and Ruby.
Skill Level Intermediate
Duration
Views
Q: I'm encountering script errors message with the prime_dates.php file used in the "Priming the date_record column" movie in this course. How can I resolve these errors?
A: To avoid script errors, use bindValue() instead of bindParam() in
Line 9 of the prime_dates.php file. You can also download the latest
copy of the exercise files, which corrects this issue for you. For a
more in-depth explanation of the difference between bindValue() and
bindParam(), check out the "Binding input and output values" video (http://www.lynda.com/PHP-
Q: Why can't I access the Lake Pend Orielle site (http://lpo.dt.navy.mil)?
A: The Lake Pend Orielle site is not accessible in some geographical areas. We have contacted the owner of the server to try to resolve this issue.
Q: I am unable to access the Lake Pend Oreille data from outside the U.S.
A: A static copy of this data is provided here for lynda.com members outside of the U.S
Related Courses
-
Advanced PHP: Debugging Techniques
with Jon Peck1h 29m Intermediate -
PHP: Exporting Data to Files
with David Powers3h 42m Intermediate -
Code Clinic: Ruby
with Kevin Skoglund5h 42m Intermediate
-
Introduction
-
Welcome1m 14s
-
Using the exercise files1m 56s
-
-
Problem One: Statistical Analysis
-
Overview of my solution3m 22s
-
Setting up the database4m 55s
-
Processing the full-year records10m 49s
-
Processing individual days6m 54s
-
Keeping the data up to date4m 27s
-
Creating a web service6m 21s
-
Getting the required data6m 50s
-
Problem Two: Image Analysis
-
Identify the image subset3m 14s
-
Overview of my solution3m 19s
-
Setting up the files2m 43s
-
Generating the thumbnails7m 49s
-
Finding the cropped images7m 13s
-
-
Problem Three: Eight Queens
-
Overview of my solution3m 48s
-
Rotating the chessboard4m 59s
-
Problem Four: Accessing Peripherals
-
Overview of my solution2m 1s
-
Using the Web Audio API2m 47s
-
Creating the tone generator7m 39s
-
Problem Five: Recursion and Directories
-
Overview of my solution3m 24s
-
Finding the images5m 30s
-
Extracting XMP metadata6m 22s
-
Problem Six: Building the Web
-
Building the web1m 47s
-
Overview of my solution1m 50s
-
- Mark as unwatched
- Mark all as unwatched
Are you sure you want to mark all the videos in this course as unwatched?
This will not affect your course history, your reports, or your certificates of completion for this course.
CancelTake notes with your new membership!
Type in the entry box, then click Enter to save your note.
1:30Press on any video thumbnail to jump immediately to the timecode shown.
Notes are saved with you account but can also be exported as plain text, MS Word, PDF, Google Doc, or Evernote.
Share this video
Embed this video
Video: Searching directories for photos