Since somewhere near the beginning of time, I have been kneading this idea of an image-tagging system in my head. It was my college senior project and has gone through several failed PHP startups.
Overview:Create a system capable of storing searchable meta-data for images.
It's becoming a tired idea, after all of these years. And perhaps there is some sort of usable system in place already, but most fall short of my expectations. But the truth is, I need a good image search because I have too many pictures. My proposed system would consist of the following elements.
Tags:True, tags are the fad of this waning decade. But they're useful as well. For example, let's say I have a good image of my niece I took at Easter dinner this year. A dozen searchable options pop into my head immediately:
- Easter
- Emma (niece)
- Kyle (Emma's father, my brother)
- Alexis (Emma's mother, my sister-in-law)
- Mom's House (location)
- Mom (location's home owner)
- Outside (vague locality generalization)
- Smile (facial expression)
- Canon S1 IS (camera picture was taken with)
- ...and a slew of EXIF data (ISO, exposure, flash, etc) which should be searchable...
What remains to be hammered here is whether I should opt for dumb tags (everything bold above), or conjure up some more sophisticated tagging links. In the past, I always went for something more complicated.
For example, the camera would be stored in two linked tags of
Canon >
S1 IS, which Canon being the "parent" tag.
- This is advantageous in that "Canon" is implied.
- This is disadvantageous in that a strict parent-child hierarchy is often insufficient. Notable, what is Easter? A holiday? An outing? A gathering? Yes..!
Ever since I wrote the code for this project as my senior project, I have toyed with the idea of changing platforms. That release was a Windows-only executable. This is provides the greatest power for me, the programmer, but the least amount of portability. So, I could make it:
- 1) Totally web-based. Probably use a combination of HTML, PHP, and JavaScript
- 2) Web-based with fancy front-end. Probably use Flash/Flex for UI and PHP for the grunt-work.
- 3) Compiled executable, local only. Use C++ or C# to create a self-contained, locally managed gallery and tagging system.
- 4) Compiled executable, with some level of internets. Similar to the previous option, but allow for remote hosting, searching, and viewing of images.
Each has its advantages and disadvantages. I'm stuck here, right now.