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