• Welcome to Randomland - The Forum. Please login or sign up.
 
May 01, 2024, 08:05 PM

News:

Get Out, See Green!


The Everlasting Picture Categorizing Project

Started by zourtney, Sep 05, 2008, 11:05 AM

Previous topic - Next topic

zourtney

Ye@h!!!!1 tbis pr0jects da rulz0rz!!1

Uh yeah. I guess I'm back to figuring it out all on my own. Which gives me a nearly infinite timeline and no one to disappoint.

Nick


zourtney


Nick

WIllz liststerseeen werk? I nogotz scope.

Nick

ok I guess I wont make a picture of  Listerzine as photoshop keeps crashing trying to load some font.

On a more serious note. Organizing ones picture library. Where do you even start?
In this modern age we live in, of file indexing and database driven file search. Of "image libraries" generated directly from the OS giving you rather advanced search options (even if they can be frustrating to get it to do) how does one organize their pictures? How important even is it to fret over folder naming and date ranges when I can search for everything from oct 17 1942 and have anything matching that in under a minuet (faster even if you dont have 50,000 pictures.) Naming the folders gives you a simple, easy and human readable first level or organization and from there it gets hard to add much to them. You cant assign pictures categories, you cant tag them with family members who appear in an album (folder) or image. All you can do is give them generic names and perhaps a date range. What is missing from windows is a decent tagging system. Same for linux. Though I am sure there are programs that would help I would bet they would annoy me to use. So a priority for your (our? can I join in fo realz?) project would be a powerful yet easy tagging system for managing pictures and making search possible on their subject matter, not just their date. After that one can easily see a built in search arising, or plugins for windows (that sound fun, not) and linux (probably just as not-fun.) Second, it would be a nice feature to upload things to drupal. It would be a new frontier for me, bridging the desktop app and web app as well as creating a unified version of some gallery (or just working with the modules we have, they all seem to like prerequisites and dependencies)  and working with the drupal API to crate node and have them added correctly.
But folder naming? How do you do it? Years and dateranges.. but with multiple cameras and a phone you get some over lap (i.e. (2009-9-1 to 10-3) comes before (2009-9-8 to 9-20) even though some images come after it. Not that its a huge issue) My system seem to keep things easy to find, providing I can remember about when an picture was taken.

So, to recap my ramblings.

  • 1. Tagging/Taxonomy/Categories for contentment based searching
  • 2. Drupal Bridge for sharing things with the largely indifferent world.
  • 3. Naming folders for actual file storage in a way that makes the images human-searchable

Thats all I got for now. I'll let you know when something else annoys me about how things are now in the land of photo-logging my life.

zourtney

Yes, fo reelz!

You know, if we get our drupal based image gallery set up, it might help me ger a better grasp on how to design this project's db structure. It can't hurt, at least.

Brad

I think pictures need to be organized on three criteria: date, content tags and quality.

I need to be able to do things like find all pictures taken in October 2007, find pictures tagged with the word "ocean" or all pictures I think are good enough quality to hang on my wall or upload to flickr.

It's impossible to do more than just one of those things using folder names. So you can store the tags and quality in the jpeg's meta data. Ok, but how do you find things quickly? You could use a database to keep track of what pictures are on a computer, what tags those pictures have and what quality value they've been given. This however causes it's own set of problems. Namely how do we deal with the moving, copying, deletion and addition of pictures? How do we keep the database matched up with reality?

One possiblity I can think of would be to use right click menu options similar to TortoiseSVN's for moving, deleting, adding, etc. That'd make it simple enough to do all the normal file operations and keep the database up-to-date.

The database structure itself wouldn't need to be very complex. I'll post my schema ideas later.



Nick

I like the rightclick options. I wonder if there is someway to piggyback onto the windows delete operation to call something that checks and updates a database when I supported file is deleted. The its even easier for the common user. But I think the convenience of having a (RC = rightclick, not radio-controlled) RC->RLImage->Delete/RemoveFromLibrary and RC->RLImage->AddToLibrary would be not only be more then enough, but rather cool.

But to be a real purist we should disable deleting of and images included into the program. Forever. Saving people from the temptation of deletion and the evils that there lie!

Brad

I'm pretty sure there is not anyway to hijack the deletion of a file without installing something like a rootkit. You're pretty much stuck with the right click menu options.

Here is my schema idea:

Images
Stores all image data, one row per image.

ID            int
Path         varchar(255)
Date         DateTime (the taken date, not the date it was added to the database)
Quality      int (could be out of 5 or something?)
Tags         mediumtext (comma delimited)

Tags

Stores what tags have been used and the number of images which use that tag. Very useful to have a list of which tags are in the database. This table is updated every time a tag is added or removed and is not directly tied to a specific image in anyway.

ID            int
Name         varchar(128)
Uses         int

That’s pretty much all you’d need for a basic image tagging system. Now, if you want to do something more complicated like having “sets” of images you’d need at least two more tables.

Sets

ID            int
Name         varchar(128)
Date         DateTime (date of creation of this set)

SetImages
This table maps images to sets.

ID            int
SetID         int
ImageID      int
Date         DateTime (date added to set)

Anyway that’s just my take on it. What do you guys think?

PS. Tabbing in this forum REALLY FREAKING SUCKS . That is all.



Nick

What do you want tabbing to do? It goes to each element on the page. I don't think you get the option of setting a tab order. Anyway.


What should be change about the drupal image gallery (other them making it so brad can upload images) to make it more like the picture project?

I think we should all work on creating and maintaining a image (it could be used for more thing then images. In reality we should combine all our vocabularies into one. I didn't really know what I was doing then (not that I know now) that would make things less redundant and take up less space on posts. But there is probably a reason for not doing that.)

Any input on classification? (not to hijack the thread. Feel free to reply in the comments/suggestions area)

zourtney

So, Nick and I were yackin' the other day about this project.

The way I see it, we should break down development into 3 distinct stages. This way we can see progress and not become overwhelmed (or underwhelmed, as the case may be).


  • 1) Develop standalone desktop application. From here you can tag, view, and search all items in your picture library.

  • 2) Implement Windows Explorer hooks (right click menus and such). This is dirty, nasty code and requires that DLL registration, intentional crashing of Explorer while testing etc. The result is nice, but it's not that much fun to code and I'm not sure how to do it in a managed language (C# hopefully?). So, I say this mess should be out of the scope of the initial project phase.

  • 3) Implement internet syncing. Probably will sync with Randomland's Drupal Image stuff unless I want to dig in to Flickr APIs are something even scarier. That'll be a huge project, and therefore last.

What do you think? Agree? Disagree? Did I miss something?

Nick

Let us hope that in Microsoft's hyping of c# they made OS integration a little easier. I probably hope for too much though.

Brad

So for the stand-alone portion you're pretty much going to need to write an image gallery program in C# and then add image tagging and whatnot?

I'd recommend taking a look at the interface on something like Picasa, that should give you some idea of the kinds of features you'll want (and not want). Please make the image tagging easier and better though. More like Flickr's.

So yeah, picasa gallery display + flickr tagging style. I could probably provide more concrete examples of what I'm talking about.

zourtney

Yeah, some more concrete examples would help. I have not used Flickr very much (maybe 3 or 4 times) and have never used the desktop version of Picasa. I will probably try them more extensively in the near future so I can get an idea of what kind of UI I want to build.

Specifically, what features do you like? What do you dislike?

What kind of tagging interface are you looking for?

  • "free tagging" text box where you enter a comma/space delimited list?
  • A tag-cloud with a drag-and-drop interface?
  • Something else?

Brad

YES on the free tagging. I HATE HATE HATE in Picasa how you have to click a stupid button everytime you want to add a tag. Who wants to click the button 30 times to set the tags on a single image????

Ok here is a concrete example of tag goodness that both flickr and picasa have: the ability to apply tags to a group of images at once. I want to be able to select a whole folders worth of images then apply the tag "beach" to them. Also, I want to be able to select a bunch of those same images (but not all of them) and apply the tag "Melissa" or something (I'm assuming Melissa is in those pictures.

I'll post some screenshots of picasa and flickr with me writing notes and drawing all over them sometime after I get home.