Re: Photo collection thingy



On Wed, 2002-05-08 at 22:26, Ettore Perazzoli wrote:

[I've CCed eog-list; hope you don't mind.]

> I have been playing with iPhoto for a bit and I am thinking I really need
> something like that on Linux.  :-)

Yes!  Agreed completely.

> I'd like to build this on top of EOG (2) somehow.  So, questions:
> 
>   - How re-usable is the display engine outside of EOG?  I don't want to
>     use Bonobo controls; rather, I'd like to have a library to display
>     images and do the pretty zooming etc.

This is very easy to do.  You just need to steal eog/libeog.  All the
rest is basically a bunch of Bonobo crap and a toplevel window wrapped
around libeog/ui-image.h.

>   - I need a collection display widget.  I see there is something on CVS,
>     but I don't know how good it is, and how to check it out.  (The
>     subdir is not even included in the Makefile.)

Jens has done a bunch of useful work on it, but my original design is
not very good.  We need a canvas-less model/view icon list widget.

>   - I need to write something to catalogue the images, and I wondered
>     if you had started writing anything like that yet, and if you had
>     any particular/clever ideas about it.

As far as I know no one has written anything to that effect.  I want to
keep it simple, like making each collection an XML file with stuff like

<eog-collection>
  <title>My Pulitzer-winning Photos</title>
  <author>Me</author>

  <item>
    <uri>file:///home/federico/images/foo.jpg</uri>
    <title>A Foo walking down the street</title>
    <author>Me</author>
    <copyright>2002, by Me</copyright>
    <date>2002/05/16</date>
    <description>
      A purple-colored Foo walking down the street, showing a
      contortioned face.  A car also appears, but it is not important
      to the scene.
    </description>
    <location>
      Avenida Insurgentes
      Mexico City
    </location>
    <technical-info source="user">
      Camera: Nikon F2
      Lens: Nikkor 50mm f/1.4
      Film: Kodak Tri-X
      Exposure: 1/250 sec. f/16
    </technical-info>
    <categories>
      <category name="foo" score="10"/>
      <category name="street" score="9"/>
      <category name="cars" score="3"/>
    </categories>
  </item>

  <item>
    <uri>file:///home/federico/images/dscn4774.jpg</uri>
    <title>A guy walks into a bar</title>
    <author>Me</author>
    <copyright>2002, by Me</copyright>
    <date>2002/04/18</date>
    <description>
      A man walks into a bar and tells the bartender, "gimme the
      strongest drink you've got".
    </description>
    <location>
      Sketchy bar
      Mexico City
    </location>
    <technical-info source="camera">
      DSCN4774.JPG
      CAMERA       : E990V1.1
      METERING     : MATRIX
      MODE         : A
      SHUTTER      : 1/2sec
      APERTURE     : F4.0
      EXP +/-      : 0.0
      FOCAL LENGTH : f23.4mm(X1.0)
      IMG ADJUST   : AUTO
      SENSITIVITY  : ISO100
      WHITEBAL     : AUTO
      SHARPNESS    : AUTO
      DATE         : 2002.04.18 04:26
      QUALITY      : FULL FINE
    </technical-info>
    <categories>
      <category name="bar" score="10"/>
      <category name="joke" score="8"/>
    </categories>
  </item>
</eog-collection>

This is pretty standard stuff.  I think photo agencies have a
semi-standard set of metadata, so we could steal that.  And there are a
bunch of metadata initiatives for diverse media; we just have to pick
one that is sane.

For automatic categorization and even image lookup, see this:

http://grail.cs.washington.edu/projects/query/

This is really cool, and we could store the small wavelet decomposition
in the XML file itself.  As for thumbnails, we can use the FreeDesktop
thumbnail spec or whatever.

Some things to note:

1. I'd like to have a concept of a rooted collection so that one does
not have to keep absolute URIs for all the images.  Something like

	<root>file:///home/federico/images</root>
	<item>
	  <uri type="relative">subdir-a/blah.jpg</uri>
	  ...
	</item>
	<item>
	  <uri type="relative">subdir-b/yadda.jpg</uri>
	  ...
	</item>

So you would get file:///home/federico/images/subdir-a/blah.jpg and
file:///home/federico/images/subdir-b/yadda.jpg.  But this is a minor
technical detail, and is really more oriented towards having a function
in the program called "Create collection tarball":  it takes a
collection, creates a temporary subdirectory, copies all the images into
it, writes an XML that points to them with relative URIs, and tars/gzips
it up for you.

As for the user interface, I'm thinking of something like the attached
mockup.  The window would have four areas:  search criteria, thumbnail
list of the images that match, data for selected image, image preview. 
The idea is that you can change the search criteria very easily so that
you can narrow it down quickly to the image(s) you are looking for.

We may want to throw in a hard hierarchy somewhere, possibly resembling
your directory tree.  The way I organize my pictures is by having

images/
    rolls/
	2002-05-01/
	    dscn0001.jpg
	    dscn0002.jpg
	2002-05-02/
	    dscn0003.jpg
	    dscn0004.jpg
    prints/
	Foo-original.jpg -> ../rolls/2002-05-01/dscn0002.jpg
	Foo-retouched-contrast-adjusted-etc.jpg
	Bar-original.jpg -> ../rolls/2002-05-02/dscn0003.jpg
	Bar-retouched.jpg

E.g. having the raw information from the camera/scanner/whatever (in
"rolls"), and then another "prints" directory where I point to the
original files and then create the final versions by adjusting contrast
or whatever.

This hard hierarchy is useful, so we may want EOG to present it as well
in a tree.

You could add images to a collection by dragging them from elsewhere. 
Nautilus is good enough these days, but we can also add a little
directory browser to EOG itself.  I guess you would want to use EOG for
two main things:

1. Organize your pre-EOG images.  This means dragging a bunch of images
from elsewhere into EOG and categorizing them, giving them titles, etc.

2. Organize your post-EOG images.  These come from your digicam or
whatever and are immediately added to your image collection.  We have to
make it interface to GPhoto and friends.

And finally, you would use it to look up interesting images.

  Federico

Attachment: eog-mockup.png
Description: PNG image



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]