Image Library 1.1


Download Lastest Release
Show license

Image Library

Image Library lets you manage images and videos by associating tags to them. This is a full re-implementation of my Python-based application.

Main features:

Installation

Simply drop the .jar file where you want the application to run from.

Updating

Replace the old .jar file by the new one. The database will be updated automatically the next time the app is launched.

Usage

Note: video files are not playable from the application itself, only their first frame is displayed.

Adding files

Go through the File menu and click on Add Files to add files or Add Directory to import all valid files from a directory; or you can simply drag-and-drop files and directories into the main window.

You should see a dialog window with a preview of an image and a text area. This text area is where you have to type the tags for the displayed image. Once you’re done, click on Next to go to the next file or Finish to finish. You can click on Skip to skip the current file and go directly to the next one.

While editing tags, you can choose where to move the current file by clicking on Move to…; the path is then displayed below the button.

If the application found similar images already registered, a button labelled Show similar images… will be available above the text area. It will show a list of similar images, ordered by decreasing estimated similarity. You can select one of these images and copy its tags by clicking on the button above the tags list (Warning: it will replace all tags in the text box).

Searching for registered files

You can search for files by typing queries in the search field.

Basic syntax

Tag names can contain any Unicode letters and digits, as well as underscores _.

Flags

Flags are special tags that represent a specific file property.

Syntax

#<name>

Where <name> is the flag’s name.

Available flags

<table> <tr> <th>Name</th> <th>Description</th> </tr> <tr> <td><code>no_tags</code></td> <td>Match files that have no attached tags</td> </tr> <tr> <td><code>no_file</code></td> <td>Match entries whose file is missing</td> </tr> <tr> <td><code>no_hash</code></td> <td>Match images whose hash could not be computed</td> </tr> <tr> <td><code>video</code></td> <td>Match files that are videos based on their extension</td> </tr> </table>

Examples

#no_file a b

This will match all entries whose file is missing that have both tags a and b.

#no_file #no_tags

This will match all images whose file is missing and that have no tags.

Pseudo-tags

Syntax

There exist special tags called pseudo-tags. Their syntax is as follows:

<name>=<flags><value>

Where <name> is the pseudo-tag’s name, <value> is its value, and <flags> are optional flags that modify how the value is interpreted.

This value may be one of two types:

Both types support flags. Flags are specified before the value, without any spaces in-between (e.g. i/regex/ and i"text").

Available flags are:

The default case-sensitivity depends on the app’s configuration.

Full syntax examples:

Available pseudo-tags

<table> <tr> <th>Name</th> <th>Supports string placeholders</th> <th>Supports RegEx values</th> <th>Description</th> </tr> <tr> <td><code>ext</code></td> <td>Yes</td> <td>Yes</td> <td>Match files based on their extension (without the dot)</td> </tr> <tr> <td><code>name</code></td> <td>Yes</td> <td>Yes</td> <td>Match files based on their name, including extension</td> </tr> <tr> <td><code>path</code></td> <td>Yes</td> <td>Yes</td> <td>Match files based on their full path</td> </tr> <tr> <td><code>similar_to</code></td> <td>No</td> <td>No</td> <td>Match images that are similar to the specified one</td> </tr> </table>

Examples

path="/home/user/images/summer?.png

This will match images with paths like /home/user/images/summer.png, /home/user/images/summer1.png, /home/user/images/summers.png, etc.

similar_to="/home/user/images/house.png"

This will match all images that are similar to /home/user/images/house.png (if it is registered in the database).

a (b + c) + -(d + e) ext=i"jp?g"

Here’s how to interpret it:

The result is the union of both file sets.

Tag definitions

The application supports tag definitions, i.e. tags defined from tag queries (e.g.: tag animal could be defined as cat + dog + bird). You cannot tag files directly with tags that have a definition, they exist only for querying purposes.

Configuration file

The following configurations can be modified in the settings.ini file. If the file does not exist, launch the application at least once to create it.

Found a bug?

If you encounter a bug or the app crashed, check the error log located in the logs directory where you put the application’s JAR file and see if there’s an error. You can send me a message or open an issue with the error and a description of how you got this error, that would be really appreciated!

Documentation

Soon…

Requirements

Author


Planned Features


Changelog

  • Add support for video files (AVI, MOV, MP4, OGV, WEBM); only first frame is shown in app

  • Fix the edit and delete menus not being properly updated whenever focus changes between the results list and tags list

  • Image tagging

  • Tagged images searching with a simple querying language

  • Replace/move image files while keeping all associated tags

  • Manage tags (create, remove, organize with types)

  • Tag completion in queries and image tags editor

  • Apply pattern-based transformations to images paths and tags

  • List similar images (hash-based)

  • Fully translated interface, available in English, French, and Esperanto