Introduction
Description
PhotoOrgz is a photo organizing application for Windows. The main purpose of the application is to ease finding of images. This is done by providing means for automatic (AI based) and manual tagging of images. The meta data is by filtering.
PhotoOrgz is not an application for photo editing, but it streamlines the process of identifying images and communicating these by drag/drop to a photo editing application.
The application works on locally stored images, there is no need for uploading to any cloud storage.
Hardware description
For performance reasons it is best to have the images stored on a local SSD disk. The face, object and scene detections are done using the CodeProject.AI service. This service can take advantage of CUDA enabled GPU’s. For best performance on the AI part, ensure that your graphic card is CUDA enabled, check the CodeProject.AI web site for more information.
Image organization
PhotoOrgz handles the following image file extensions: ".JPG", ".JPE", ".JPEG", ".BMP", ".GIF", ".PNG".
Before starting to use the PhotoOrgz application, it is wise to have a look at how you have organized your image collection on disk. PhotoOrgz reads meta information from your images by using main entry points, i.e. source root folders. Meta information from images in and recursively below a root source folder is scanned into the system. It is recommended not to have to many root folders, organize your photo collection to be accessible from a few local disk root folders.
The images are displayed to the user upon a disk folder selection. If the folders contain to many images, it will be slow to select folders. By default, only the first 500 images are displayed upon a folder selection. The performance penalty is due to displaying a thumbnail image for each image.
To summarize, organize your images into a few source folders and ensure that each subfolder does not contain to many (< 500) images.
Usage
Starting the application
PhotoOrgz is started by double clicking the shortcut made by the installation script or the exe file in the installation folder (default: C:\Program Files\PhotoOrgz\PhotoOrgz_[version#]).
Screen layout

The application is build using a panel docking framework. The screen is divided into 5 panel areas with the main menu on top. This is illustrated in the above image with different color for each area. You can configure the panel layout the way that suits you best. This is done by dragging the panel title to drop handles. The drop handles will appear after starting a drag operation.

The panels can be dropped at the Left, Top, Right, Bottom or Center of a panel area. If it is dropped outside a drop handle, the panel will be floating. This applies to all panels except for the Configuration, Filter, and Log panel. The Configuration panel is a floating modal panel, whilst the Filter panel is locked to the Top and the Log panel is locked to the bottom. When the application is closed the panel layout is stored, and the layout will be the same the next time you start the application.
Background processes
The bottom line is a status line. This will show the status of processes started. It is possible to stop an ongoing process by clicking on the stop icon to the right.
![]()
![]()
Starting for the first time
When starting the application for the first time, do the following:
- Verify that the connection to the AI Server is established, look for the text "Connection to AI Server established" in the log panel.
- Click the Add Source button in the Folders panel to select a root source folder. Thumbnail images are created in the background. It is recommended to wait until this is finished before exploring the application further.
- Select a folder in the Folders panel to display the images contained by this folder and all its subfolders.
- Right click the selected folder and select Detect => Faces
A background process is started to detect faces in the images in and below the selected folder. When done, select the Faces panel to inspect the result. - Go to the Persons panel to create a person. Drag/drop the person to selected faces in the Face panel to assign a face to a person.
- Enable the filter in the Filter panel and Double click the selected person in the Persons panel. Verify that only images containing the person is displayed.
- Right click the selected folder and select Detect => Objects. When the background process is finished go to the Objects panel and double click an object. Verify that only images containing the object is displayed.
- Right click the selected folder and select Detect => Scenes. When the background process is finished go to the Scene panel and double click a scene. Verify that only images representing the scene is displayed.
Menus
Main menu
The main menu consists of three options.
File menu

Report Database Consistency
It is recommended to run this process before doing a cleanup of the database to avoid unwanted loss of image metadata.
The function reports the number of the following problems:
- Images not contained by any valid source folder.
- Images with a valid source but missing on disk.
- Thumbnail image files not referenced from any meta data.
- Face image files not referenced from any meta data.
- Computed face similarities referencing none existing faces.
The result is displayed in the log panel at the bottom.
Clean Up Database
Fixes the problems listed in the previous chapter. If the report lists a lot of images not existing on the disk anymore, it might be because you have accidently removed or moved images. If you want to keep the metadata for these images, it is better to re-install the image files on disk than running this procedure.
Backup Lists
This option will backup all your tags and playlists to the application backup folder.
Restore Lists
This option will restore the tag list and playlists found in the application backup folder.
Open Application Folder...
This will open an explorer window with the application folder. In this folder you find a sub folder for:
- Backup
Contains backup for tag lists and playlists. - DB
Contains a database file containing the image meta data. PhotoOrgz uses the LiteDB - Faces
Contains extracted face image files. - Filters
User defined filters written in C# language. - Log
Contains log files. Events that you see in the Log panel is also saved in the files in this subfolder. - Restart
User interface restart files. - Scripts
User defined C# script for image processing. - Thumbnails
Extracted thumbnail files.
E.g:

Panels menu

The panels menu shows the different panels that can be to opened. If the panel you want to open is not present in any panel area, it will open in the same position as it was last time. If the panel is already open, it will be activated.
Help menu

The Help menu has the following options:
- Home Page
Opens https://photoorgz.com/ - About PhotoOrgz
Opens a dialog with version number and home page reference. - License
Shows the license agreement text. - User Manual
Opens a pdf file with the user manual. - Check for Updates
Informs about the newest available version. - Script API
Informs about script api by opening: https://photoorgz.com//Documentation/ScriptApi/html/index.html - Official Scripts
Informs about the available official scripts by opening: https://photoorgz.com/Documentation/Scripts/index.html - Official User Defined Filters
Informs about available official user defined filters by opening: https://photoorgz.com/Documentation/Filters/index.html - Install Newest PhotoOrgz Version
Downloads and installs the newest version of PhotoOrgz. The version is installed under the same parent folder as the current version. The install folder is named PhotoOrgz_[version number] - Install Official Scripts
Downloads and installs the newest version of the official PhotoOrgz scripts to the folder [Application Storage]/Scripts. The current script folder is re-named to Scripts_[Current Date]. The newest version of the scripts are only guaranteed to work with the newest version of PhotoOrgz. - Install Official User Defined Filters
Downloads and installs the newest version of the official PhotoOrgz user defined filters to the folder [Application Storage]/Filterss. The current script folder is re-named to Filters_[Current Date]. The newest version of the filters are only guaranteed to work with the newest version of PhotoOrgz. - Install Codeproject.AI
PhotoOrgz is using the CodeProject.AI as a service for face, object and scene detection. If you intend to use any of this functionality, CodeProject.AI must be installed. This function starts the installer after downloading it to a temporary folder. The download process might take several minutes. After a successful installation, you need to enter the followinf URL in your browser http://localhost:32168/, and install the Face Processing, Object Detection and Scene Detection sub modules. When the sub modules are installed, these can be tested by entering http://localhost:32168/vision.html in your browser.
Context menu
The context menu is displayed when you right click on an object. The menu will differ depending on which object is right clicked.
Here is an example where an selected image in the thumbnails panel is right clicked.
Panel descriptions
Standard hot keys will work in most panels where suitable. Like copy = ctrl+c, cut = ctrl+x, paste = ctrl+v, etc.
Configuration panel

The panel is floating and modal (close it to access any other panels). The parameter values in bold face can be changed. The AI parameters are threshold values for detecting faces, objects, scenes, or it is used as a threshold when matching/recognizing faces, see Match Faces and Recognize Faces. The max listed images parameter is used to limit the number of images listed in the Thumbnails and Files panel. This is done due to performance reasons. When a user selects a folder, all images complying to the current filtering in and below the folder level is listed. Each image is listed with a corresponding thumbnail. If a folder contains to many images, it would be inconvenient to wait for all to thumbnails to be displayed. If you are not able to set a proper filtering and really need to see all images in the folder simultaneously, the value can be raised, but it comes with a performance penalty.
Current image panel

Whenever an image is selected in the files, thumbnails or map panel, the corresponding image is displayed in the Current Image panel. The mouse scroll button is used to zoom the image, the left mouse button is used for panning. The Fit to Size button resets the zoom so that the image fills the frame. Mark Faces will mark faces with person names if any. When toggled on the user can drag/drop a person to a face to assign the face to that person. Right clicking inside a face, enables the face context menu, see the Faces panel for further details. Right clicking the image enables this context menu:
- Rating
Select a rate for the image by clicking a star - Select in Files Panel
Adds the image to the list of selected images in the files panel - Select in Thumbnails Panel
Adds the image to the list of selected images in the thumbnail panel
Save As saves a copy of the image to a new file name. Select Path will select the folder containing the image in the Folder panel.
Faces panel

The faces panel lists all faces in all images complying to the current filtering of images in and below the current selected folder. The panel is often used together with the Persons panel. By dragging a face from the face panel to the person panel, the face image will be connected to that person. You can than register the face to be used to recognize that person.
By dragging a person to a face, the face will be assigned to that person. If the face being the target of the drop was selected, then all selected faces will be assigned to that person. A face is selected by using the left mouse button. Holding the Ctrl button while selecting, adds to the selection, whilst holding the Shift button, selects a range. When selecting a face, the image from where it was extracted is automatically selected in the Current Image panel.
A face can have one of the following states:
- Assigned => named equal to the person
- Suggested => named as the suggested person name, but postfixed with a ?
- Unknown => named ?
- Anonymous => named Anonymous, anonymous faces are never used in matching/recognition processes
By using the Display menu on the top left, the faces can be filtered on the above states.
The face context menu has the following options:
- Accept
If a face is suggested to be a person (name postfixed with a ?), accepting means assigning the face to the named person (removing the ? mark) - Reject
Reject a suggestion, i.e. set to unknown (?) - Set to Anonymous
The face is assigned to the name Anonymous. Anonymous is not used in matching/recognizing processes. - Reset
The face is set to be unknown (?) - Remove
Removes the face. - Match
All displayed images are compared to the selected images. This is done as a background process. When finished, the selected image is displayed as the first image (top left), all subsequent faces are sorted according to similarity with the selected. All images having a similarity above the threshold configured in the Configuration panel is marked as selected. - Sort
All faces are alphabetically sorted using the face name. - Save to Text File
Saves the face meta information to a TAB separated text file. - Display
Displays the image containing the face in a floating window.
Auto suggest
The toggle in the top left of the Face panel is used to turn auto computation of face similarities on/off. When on, a background process is started each time a folder is selected. This process computes face similarities between all assigned and all unknown/suggested faces in the selected folder. The result of these computations can be used in later matching/suggesting processes, see Suggest Faces and Match Faces. This is done for performance reasons; the face matching algorithm is a resource demanding process.
Files panel

Clicking the column header sorts the images according to the column.
The context menu for the Files panel has the following options:
- Rate Images
Click a star to set the rate, left most means 1, rightmost 5. All stars are unfilled, means undefined. After selecting a rate, all stars from 1 to the selected rate will be filled. - Display Images
Displays all selected images in a floating panel, can be used to compare images. - Select in Thumbnails Panel
All selected images will be marked as selected images in the thumbnail panel. - Copy Images
Copies the images into the paste buffer. A later Paste operation on a folder in the Folders panel will copy the images to the selected folder. In addition a copy of the meta data information is made. - Cut Images
Copies the images into the paste buffer. A later Paste operation on a folder in the Foplders panel will move the images to the selected folder. In addition the meta data information is copied. - Paste Images
Paste images copied/cut from another folder. - Delete Images
Deletes the images and corresponding meta data from the disk/database. - Save to Txt File
Saves meta data for all displayed images to a column based TAB separated text file. This option has two choices: All Images or Selected Images - Remove Faces From Images
Removes all faces from the selected images. - Remove Objects From Images
Removes all objects from all selected images. - Remove Scenes From Images
Removes scene from all selected images. - Remove Tag From Images
Removes selected tag from all selected images. - Backup Metadata
This will backup metadata for each image in the selected folder and subfolders. The backup creates a file for each image in the same folder as the image. - Restore Metadata
This will restore metadata for each image from files in the selected folder and subfolders.
Note
If the context menu is activated on a selected image, the operation will be applied to all selected images, else it will only be applied to the image being right clicked.
Filter panel

The filter mechanism is enabled by using the Enable checkbox at the top left. After enabling, each sub component can be individually toggled on/off. The following sub components are provided:
- FileName
A regular expression is applied on the full file path of the image. - Rate
Clicking on a star filters all images using the selected rate range. A rate range can be selected by first clicking a star representing the start of the range and then holding the Shift key to select the end of the range. - Start Date
All images taken at or later then the given date. - End Date
All images taken at or before the given date. - Tags
A regular expression is used to check the tags of an image. The tag model is hierachical as shown above. If the selected tag text represents a tag group, the image tags are also checked against all children of the given tag, i.e searching for Camera will also return images tagged with Sony, Nikon and Canon. Double clicking a tag in the tag panel launches the tag text into the tag filter text. - People
A regular expression is applied to the name of the faces contained by the image. Double clicking a Person in the person panel, launches the person name into the Person filter text box. If persons are created with familyname, using the familyname will return images containing person with that family name; i.e. the search is done for text containment. - Objects
Images containg objects matching the given text is returned. The search mechanism is regular expressions. Double clicking an object in the object panel launches the object name into the Object filter text box. - Scene
Images containg representing a scene matching the given text is returned. The search mechanism is regular expressions. Double clicking a scene in the scene panel launches the scene name into the Scene filter text box. - Position
The folowing options are available:- Undefined (The image does not have a GPS position)
- Defined (The image does have a GPS position)
- InsidePolygon (The image position is inside the current polygon digitized in the Map panel)
- OutsidePolygon (The image position is outside the current polygon digitized in the Map panel)
- User Defined
User defined filters can be made using C# code. By placing a compileable C# file in the “Application Storage/Filter” folder, a filter with the same name as the code file will be available in the User Defined drop down menu. Filters can be implemented using the Script panel. Right clicking a user defined filter opens the parameter dialog of the user defined filter. Closing the parameter dialog will apply the parameters.
The file name, tags, objects, and scene filters use a text as a search argument. The text matching process in these cases are regular expressions. The tags and objects filters are applied on the object/tag list, i.e. a comma separated list of text values. In most cases a regular expression is an overkill. If the search argument does not contain any regular expression special characters, the filter will work as a text containment filter. Below are a few useful examples:
- \?
Search for a text containing a question mark, since the ? is a special reg. ex. character, it has to be escaped using the \ character. Use it to search for unknown and suggested faces. - ^\?$
Search for a text containing only a question mark. Use it to search for single unknown faces. - ^\?[,\?]*$
Use it to search for images with only unknown faces (?,?,?) - ^(?:(?!UnwantedWord).)*$
Searches for a text that do not contain the unwanted word, replace “UnwantedWord” with your own text. Useful to search all folders but not an unwanted.
Folders panel

In the Folders panel you can inspect all disk folders contained by the registered source root folders. The Add Source is used to add a source root folder to the system. When adding a new source folder, a background process to create thumbnail images is started. A progress meter showing the progress of the background process is shown in the lower left. To avoid performance lag when selecting folders, it is recommended to wait until the background process is finished before inspecting the images in the source folder.
To view only folders containing images satisfying the current filter setting, toggle the Filter checkbox at the top left of the panel.
The context menu for the Folder panel has the following options:
- Remove Source
Only available for source root folders. If selected, all meta data for images contained by the source folder or any of its subfolders are removed from the PhotoOrgz database (They are not deleted from the disk). - Backup Metadata
This will backup metadata for each image in the selected folder and subfolders. The backup creates a file for each image in the same folder as the image. - Restore Metadata
This will restore metadata for each image from files in the selected folder and subfolders. - Move Source
Useful if you have made a backup of a source folder and want to switch to the backup. - Save To Txt File
The meta data information from all images contained by the selected folder and all its subfolders are written to a TAB separated text file. - Generate Thumbnails
Useful if you have stopped the background process generating thumbnails before completion or if you have accidentally removed the thumbnails. - Detect
The following functions works on all images contained by the selected folder or any of its subfolders regardless of the filter setting.
- Faces
The CodeProject.AI service is used to scan images for faces. After detection, the faces can be assigned to persons. This is done by drag/drop a person from the Person panel to selected images in the Files/Thumbnails panels, see Faces. - Objects
The CodeProject.AI service is used to scan images for objects. Upon completion, the Objects panel contains a unique list of detected objects. Double click an item in the objects list to filter images on this object. - Scene
The AI service is used to scan images for scenes. Upon completion, the Scene panel contains a unique list of detected scenes. Double click an item in the scene list to filter images on this scene.
- Faces
- Remove
The following functions works on all images contained by the selected folder or any of its subfolders regardless of the filter setting. It is only useful if you for some reason need to redo a process. The image meta data contains a flag for face, object and scene detection that needs to be reset. This is done for performance reasons, there is no need to redo a detection process if the flag tells that the process is already done. This means that you can add new images to a folder and redo the detection process on the folder without the performance penalty of redoing the detection for images already contained by the folder.- Thumbnail
- Faces
- Scenes
- Objects
- Tags (Removes the tag assignment to an image and not the tag itself.)
- Face Similarities
- Suggest Faces
When selecting a folder, the unknown faces in images in this folder and all its subfolders regardless of the filter setting is checked for similarities to known faces. Only pre-computed similarities are used. If the Auto compute face similarities is toggled in the Faces panel, similarities are automatically computed in the background when a folder is selected. When a person is assigned to a particular face, the similarity between this face and all unknown/suggested faces in the same folder is computed. An unknown face is suggested to be a person if it has a similarity above a certain threshold, see Configuration. The suggestion is flagged by assigning a name to the face equal to the person’s name but postfixed by a question mark. - Match Faces
All faces in images in the selected folder and all its subfolder is divided into assigned and unknown faces, see Faces. The similarity between all unknown faces and all assigned faces is computed. If an unknown face has a similarity to a known face above a certain threshold, the face is suggested to belong to the same person as the known face. The suggestion with the highest similarity is used. The suggestion is flagged by assigning a name to the face equal to the person but postfixed by a question mark. The threshold used in the matching process can be found and adjusted in the Configuration panel opened from the Windows menu seen below. - Recognize Faces
Face recognition depends on face registration. Preparing for face registration is done by selecting face images to be registered for that person. This is done by first selecting a person and then drag/dropping a face from the Faces panel to the Persons panel as seen below.
Assigning faces to a person as described above and hitting the Register All button, will register all persons with assigned face images. When this is done, face recognition against the registered persons can be done. The process is executed for all unknown/suggested faces in all images in the selected folder and all its subfolders. If a face is recognized with a higher confidence than given in the Recognized face confidence shown in the Configuration panel, the face is assigned to that person. - Delete Folder
Deletes the images in the folder and all its subfolder from the PhotoOrgz database and deletes the folder from the disk. - New Folder
Creates a new disk folder below the selected folder. - Rename Folder
Renames the disk folder and updates the meta data information of the contained images accordingly. - Paste Images
Images copied/cut from the Files/Thumbnails panels are pasted to the selected folder. If copied, all meta information from the source images is copied to the new images.
Log panel

Contains messages to the user. For most actions there are no pop-up messages asking you to press OK, YES or CANCEL. When you start a process or click and action all the messages are shown in the log window. Right click and select "Clear Log" to empty the message window.
Map panel

The map window is used to show the GPS location of images, but it can also be used to filter. The map is zoomed using the mouse wheel and panned using the right mouse button. By hovering the mouse over an image location, the meta data are displayed as a tool tip. Clicking an image position with the left mouse button, selects the image as the current.

Before creating a new filter polygon, hit the Clear Polygon to remove previous. A new polygon is digitized using the left mouse button and simultaneously holding the shift button. The points defining the polygon can be changed later by clicking inside the point and dragging it to a new position.
Objects panel

After running an object detection process, see Detect for more details, the object panel contains a unique list of objected objects. The filter at the top can be used to narrow the list. Double clicking and object launches the object name to the object filter text box. Subsequent double clicks on the same object toggles the filter on/off.
Persons panel

Entering text in the filter text box filters the list of existing persons. A new person is created by writing a unique name in the filter box and hitting the Create Persons button. A person can be toggled on/off as a favorite. This provides a useful filtering mechanism when you want to work on a narrower list of persons. Dragging faces from the face panel attaches the face image to the person, see Faces for more information. After attaching face images to a person, the person can be registered to be used in a face recognition process, see Recognize Faces.
Clicking right mouse button on a person opens the context menu with the following options:
- Register Person
Register the attached face images for person recognition. - Unregister Person
Removing the person from the list of registered persons. - Delete Person
Deletes the person from the database and unregisters images for that person. In addition, all faces assigned to the person is set to unknown.
Double clicking a person launches the person’s name into the person filter text box. Subsequent double clicks on the same object toggles the filter on/off.
Playlist panel

A play list is a named ordered collection of images to be used in for instance a slide show. The playlist panel is used together with the thumbnail panel. To create a new playlist, enter the name and hit the create button. To delete a playlist hit the delete button. An image in the playlist can be displayed or removed from the playlist using the context menu. From the context menu you can also sort the images in the playlist.
Properties panel

The image meta data properties contained by the image file is read for the currently selected image. The meta data are organized in folders. The property name consist of a folder part and a name part separated by a “-“. The panel provides a filtering mechanism to narrow the list.
Scenes panel

After running a scene detection process, the Scene panel contains an alphabetically sorted list of unique scenes being detected. Double clicking a scene launches the scene name into the scene filter text box. Subsequent double clicks on the same scene toggle on/off the filter.
Script panel

The scripting panel provides means to write scripts for image processing and user defined filters using the C# language. Saving a compilable C# file in the Filter sub folder under the application storage folder, makes the filter immediately available in the user defined drop-down menu. See Scripting for further details.
Slideshow panel

The slideshow panel enables you to create slide show to run on your screen. To create a slide show just drag the images you want to be in the show into the panel. You can also run a slide show based on a filter.
Hotkeys that can be used in this panel is:
Up- and left arrow = previous image
Down- and right arrow = next image
F11 = toggle full screen on/off
Esc = leave fullscreen mode
Space = toggle auto play on/off
If you right click an image you will open the context menu where the following choices are available:
- Remove Image
Removes the selected image from the slide show. - Randomize Order
The order of the images is randomized. - Reverse Order
Changes the sort order from ascending to descending or first date to last date, etc. - Sort By
Different choices to sort the images in the slide show. - Copy Images
Copies the selected images. - Cut Images
Cuts the selected images. - Paste Images
Paste images that where either copied or cut. - Delete Images
Deletes the selected images from disk
Statistics panel

In the statistics panel you can get imformation regarding the number of images for each:
- Folder
- Rate
- Tag
- Person
- Object
- Scene
The following input image modes can be selected:
- All Images
All images across all sources - All Images Filtered
All images across all sources complying to the current filter setting - Current Folder
All images in the currently selected folder - Current Folder and Sub Folders
All images in the currently selected folder and all sub folders below - Current Folder and Sub Folders Filtered
All images in the currently selected folder and all sub folders below complying to the current filter setting
Entering text in the Filter text box filters narrows the item list. The number to the right of the filter text box represents the number of elements in the item list.
Tags panel

The tag implementation is using a hierarchical tree model. This is done to be able to provide filtering using a hierarchy (By filtering on the tag Fish, all images tagged Fish, Big and Exotic will satisfy the filter).
Enter a tag name and hit the Create button to create a new tag or the Filter button to filter the tag tree. When creating a tag, it will be created as a child of the selected node. Right click a node to delete it.
The Clear button will delete the whole tag tree. You will get a warning before it is deleted.
With the Save button you are able to back up the tag tree to a file. The Load button is used to restore the tag tree from a previously saved file.
Images are tagged by dragging a tag from the tags panel to the thumbnails or files panel. If dragged to an unselected image, only that image is tagged. If dragged to a selected image, all selected images will be tagged. To remove a tag from an image, hold the Shift key while drag/dropping the tag.
Thumbnails panel
![]()
The thumbnail panel contains thumbnails for all images in the currently selected folder and all sub folders below that complies to the current filtering.
The context menu for thumbnails panel has the following options:
- Display
Displays selected images in a floating panel, can be used to compare images. - Select in Files Panel
The currently selected images in the thumbnail panel will be added to the list of selected images in the file panel. - Sort Ascending
If toggled, the thumbnails are sorted ascending by the selected sort by property, else the sorting is descending. If ascending, the selected sort by property is marked by an upward pointing arrow, if descending, the selected sort by property is marked by a downward pointing arrow. - Sort By
The thumbnails can be sorted based on Date, Rate, File Name, File Path, Scene, Tags or Objects. By subsequently selecting the same filed you can toggle between ascending/descending sort order. - Copy Images
Copies the selected image into the paste buffer. Images can then be copied to a selected folder by using the Paste operation in the folder panel. Both image file and met data are copied in the operation. - Cut Images
Copies the selected image into the paste buffer. Images can then be moved to a selected folder by using the Paste operation in the folder panel. The image file is copied to a new folder location and the meta data are updated accordingly. - Paste Images
Paste images copied/cut from another folder. - Delete Images
Selected images are deleted from disk and the meta data from the database. - Remove Thumbnails
Removes the thumbnail files. New ones will be generated next time you select the folder. - Remove Faces From Images
Removes the faces file and resets the face flag. - Remove Objects From Images
Remove the objects connected to the photo or selected photos. - Remove Scenes From Images
Remove the scenes connected to the photo or selected photos. - Remove Tag From Images
Removes the selected tag from the images. - Backup Metadata
This will backup metadata for each image in the selected folder and subfolders. The backup creates a file for each image in the same folder as the image. - Restore Metadata
This will restore metadata for each image from files in the selected folder and subfolders.
If the context menu is opened on an unselected image, the selected operation is only applied to the selected image. If the context menu is opened on a selected image, the selected operation applied to all selected images.
Reset Panel Layout
Resets the window layout to default configuration as shown below.

Scripting
The scripting language is C#. It is possible to process the images using the ImageMagick library. The Watermark script is an example to this.
This chapter is for the advanced user. If you are happy with the standard features and don’t feel for programming, there is no need to read this chapter. If you feel there is missing a feature please send us a note and it could be implemented in a future version.
New Script
In the Script panel click the “Show script editor” at the bottom of the script panel to open the script editor as shown below. Click “New script ….” to create a new script from a template. The script is sub typed from the BaseScript class, see the api documentation for further information. The most efficient way to understand the scripting possibilities is by studying the script examples found here. The scripting panel provides a very basic C# code editor. A better way to write scripts is to use a professional code editor like VisualStudio. To be able to compile the scripts outside the PhotoOrgz application, you need to add references to the dll’s in the PhotoOrgz system folder. If script files are edited outside PhotoOrgz, they are automatically re-loaded into the system when the files are saved.

Script main components
A script consists of a few key elements.
- Enum Id
Used to address an input variable. The value provided by the user can be read by the script using a call to the GetObject<T>(Enum e) function. - InputVariables
All input variables needed by the script is defined with a name, type, default value, description and a flag stating if it is mandatory. Based on the type of the variable, a GUI component easing the selection of a value is automatically provided. - PrepareExecution
Override the PrepareExecution to read info provided by the user to be ready for image processing. - GetInputImages
Override the function to define the collection of input images, can be implemented using the BaseScript.GetInputImages functions, see this example. - ProcessImage
Override the function to implement how an input image is to be processed. - EndExecution
Override the function if any wrap up of the process is needed.

Automatically generated GUI
Depending on the type of the input variable the GUI selectors below are automatically created to receive input from the user.
- FileInfo => File selector
- DirectoryInfo => Folder selector
- DateTime => Date picker
- Bool => toggle
- Enumeration => drop down menu
- Color => color picker
- Objects => object container capable of receiving drag/drop of images, tags, persons etc.

Script execution
Saving a script automatically compiles it to make it ready for execution. If the compilation is successful, the GUI components for selecting the input variables will be available. Hitting the Execute button will start the script execution given that the mandatory input variables are defined. The default implementation is that the script will be executed as a background process.
Compiling
A script is automatically compiled when the script is saved. If the compilation is unsuccessful, the compilation errors are written to the Log panel. If you need to add references to libraries not already in the default list of reference dlls, you need to add a reference directive to the code as seen below.
// css_ref Library1.dll, Libray2.dl
The css_ref directive is inside a // comment. The referenced libraries must be present in the PhotoOrgz system folder. If you need to use a library not present in the PhotoOrgz installation folder, you need to copy it and all its dependencies to the folder before referencing it from your script file.
Code shared between scripts can be separated into its own C# files and then include by the script file by using an include directive as seen below.
// css_inc File1.cs, File2.cs
Debugging
To debug your script you need to attach a debugger like VisualStudio to the PhotoOrgz process. By adding call to the BaseScript.DebugBreak() the debugger will halt the process at the code location of the call.
User defined filters
Create a new user defined filter from a template by hitting the New Filter… button. The filter can be subtyped from the BaseScript class to be able to use the functionality implemented by this class, but it must implement the IFilter interface. When the script is saved to the Filters folder under the PhotoOrgz application folder it will be automatically added to the list of user defined filters given that it compiles Ok.
Filter main components
The IFilter interface defines the following:
- Description
Text property shown to the user describing the filter - Initialize()
Implement if any action is needed before applying the filter, see this example. - IsValid(DB.Image image)
The meat of the filter validating if an image should pass the filter.
Backup/restore
PhotoOrgz does not have any backup/restore procedures implemented. But it is recommended that you backup your metadata and image files using other means. The FreeFileSync application can be recommended.
All meta data information is kept under the application storage folder, check the Configuration panel for the location on the disk. In addition, you should also backup your image files, i.e. all source root folders. In case you need to restore the meta data information, either restore the content of the application storage folder or rename your backed up folder to the name of the application storage folder. In case you need to restore any of the image source root folders, you can either use the folder context menu Move Source to move the source folder to the backed-up location, or you can restore the content of the folder.
