Menu

Tree [a22f40] master /
 History

HTTPS access


File Date Author Commit
 .circleci 2025-05-28 Richard Eigenmann Richard Eigenmann [90338b] Set up xvfb for circleci
 .semaphore 2025-05-27 Richard Eigenmann Richard Eigenmann [a10019] Upgrade semaphoreci to Java 24
 gradle 5 days ago Richard Eigenmann Richard Eigenmann [31e09d] Update Versions
 libs 2022-08-11 Richard Eigenmann Richard Eigenmann [d89ef0] Attempt at reorganisation
 src 5 days ago Richard Eigenmann Richard Eigenmann [a22f40] Rebuild the Project Website with Astro
 webpage 5 days ago Richard Eigenmann Richard Eigenmann [a22f40] Rebuild the Project Website with Astro
 .gitignore 2022-04-06 Richard Eigenmann Richard Eigenmann [8d860c] Muck about with Travis and Gradle
 .travis.yml 2025-05-26 Richard Eigenmann Richard Eigenmann [316bca] Upgrade Travis to openjdk24
 README.md 5 days ago Richard Eigenmann Richard Eigenmann [4b08f5] Attempt at renaming php files
 build.gradle 5 days ago Richard Eigenmann Richard Eigenmann [a22f40] Rebuild the Project Website with Astro
 gradle.properties 2023-06-25 Richard Eigenmann Richard Eigenmann [a8416f] Show Gradle errors
 gradlew 2019-06-09 Richard Eigenmann Richard Eigenmann [ea868a] add gradle version
 gradlew.bat 2024-04-19 Richard Eigenmannn Richard Eigenmannn [c7634b] Use JUnit's @TempDir annotation
 licence-GPLv2.txt 2023-04-25 Richard Eigenmann Richard Eigenmann [f668dc] Add license document to project
 settings.gradle 5 days ago Richard Eigenmann Richard Eigenmann [a22f40] Rebuild the Project Website with Astro
 sonar-project.properties 2021-11-22 Richard Eigenmann Richard Eigenmann [f0bc9b] Add properties for sonar

Read Me

JPO

Java Picture Organizer

Build Status
CircleCI
Codacy Badge
Quality Gate Status
Bugs
Coverage
semaphore

Homepage: https://j-po.sourceforge.io/

About JPO the Java Picture Organizer

JPO is a desktop program that helps you organise your digital pictures by putting them in collections that are saved as
plain XML files. You can label the picture, capture its location and associate it with Keywords.
When you open up a collection you can browse or search the pictures, skip through the thumbnails, share them by
email or generate a website. A picture viewer allows you to see the pictures in full screen with simple Zoom-in and
Zoom-out with the left and right mouse buttons or mouse wheel.

A fundamental design principle is that JPO doesn't alter your pictures. They stay unchanged on your disk unless you
ask JPO to move them somewhere or to delete them. It does allow you to "consolidate" all the picture files into
a directory.

JPO is not a photo editing application. There are many excellent packages out there with which you can touch up your
pictures. You can make JPO open such a program for you.

Richard Eigenmann from Zürich has spent the last 22 years building and improving JPO as an OpenSource project. He
hopes you will find it useful and enjoys feedback.

Features

  • Quickly Organize digital images into collections and groups
  • Allows tagging of pictures with keywords
  • Creates web pages from your collection
  • Download pictures from Camera with the ability to load only the new ones
  • Send rescaled images and originals via email
  • View pictures as a slide show
  • Simple zoom-in and zoom-out with left / right mouse buttons or mouse wheel
  • Rotation on the fly without modifying the original image
  • Browse image thumbnails
  • Automatically advancing slide shows
  • Captures metadata and has search features
  • Displays EXIF and IPTC metadata
  • Export to directory facility to share via e-mail or CD-ROM
  • Open XML data structures
  • Pure Java, no native libraries
  • Runs on Windows, Linux and macOS, anywhere Java runs
  • Can call up outside applications
  • Leaves your pictures where they are
  • Can move pictures to new locations to tidy up (consolidate)
  • Doesn't modify your original pictures
  • Open source license

Installing JPO on Windows 10 & 11

Visit the SourceForge.net download page by clicking this green button. Note that the download starts directly after 5
seconds. Install the application like any other Windows application. Note that the developer has not paid for Microsoft
Certifications and you will get a lot of warnings about the application being from an "Unknown Publisher". JPO does
not collect data about you. Check the Privacy Policy. If you
know how I can improve this at low cost, please let me know.

You can remove it just like any other windows
application by opening the Start menu, clicking on the cogwheel icon (Settings), choosing Apps in the Settings Window
that opens up, scroll down to JPO and there click on the uninstall button. It is not supposed to leave any files
or registry settings behind.

Download Button

Alternatively, visit the SourceForge download area

I apologise for the mess SourceForge have made of this page with all the ads.

HIDPI - Problems with super high resolution displays

Many Laptops have super High Resolution Displays (HiDPI) which Java doesn't deal with very well by default. The UI then
shows up with unusably small fonts and icons. You can fix this by setting the environment variables.

Set the GDK_SCALE environment variable to the desired scale factor. This variable controls the scaling of the UI elements.
Replace 2 with your preferred scale factor.

export GDK_SCALE=2

Set the GDK_DPI_SCALE environment variable to the inverse of the GDK_SCALE value. This variable adjusts the DPI scaling
of fonts and other elements to maintain their proper size. For example, if you set GDK_SCALE to 2, then GDK_DPI_SCALE should be set to 0.5.

export GDK_SCALE=2
export GDK_DPI_SCALE=0.5

Connecting with the Author

JPO is an Open Source project and you can contribute to it. To connect with the author simply send an email to
<a href="mailto:richard.eigenmann@gmail.com"richard.eigenmann@gmail.com

Developing JPO with IntelliJ IDEA

As of 2025 JPO is being developed with the community edition of IntelliJ IDEA.

Once you have your IntelliJ IDEA installed and working you can clone the JPO repository from GitHub and open it in IntelliJ IDEA.

git clone https://github.com/richardeigenmann/JPO.git

To run the project go to the Gradle Tasks Window click
Jpo > Tasks > application > run.

Or if you prefer the GUI, you can do the following:

On the Welcome screen click on Check out from Version Control

Enter the URL https://github.com/richardeigenmann/JPO.git and click Clone

Confirm You have checked out and IntelliJ IDEA project file: .../build.gradle

On the right margin you have a tab Gradle which gives you access to the tasks

Pick JPO > Tasks > build > build and it should download dependencies compile and run the tests

Exploring the code - with SourceTrail

See https://sourcetrail.com

export LANG=en_US.UTF-8
sourcetrail

# Project > New Project
# give it a name: JPO
# tell it where you want it to create it's working files
# Add Source Groups
# Pick Java > Java Source Group from Gradle > Next
# Java Standard: 12
# Gradle Project File: Jpo/build.gradle
# Next > Next 
# on the New Project screen click on the plus (+) icon
# Add a new Source Group Type - Java - Empty Java Source Group
# Java Standard: 12
# Files and Directories to index: src/main/java
# Next > Create
# Classes > Main > ApplicationStartupRequest > ApplicationEventHandler > handleApplicationStartupRequest

Experimental: Running with Flatpak

flatpak-builder build-dir --force-clean io.sourceforge.j-po.json
flatpak-builder --run build-dir io.sourceforge.j-po.json flatpak-run.sh
flatpak-builder --repo=repo --force-clean build-dir io.sourceforge.j-po.json
flatpak --user remote-add --no-gpg-verify --if-not-exists tutorial-repo repo
flatpak --user install tutorial-repo org.richinet.jpo
flatpak run org.richinet.jpo
flatpak remove org.richinet.jpo

Developing JPO with Netbeans

Ensure you have Netbeans set up:

Check that Netbeans is using the correct version of Gradle by opening Tools > Options > Java > Gradle > Execution . The Gradle Distribution should be Custom and point at your Gradle directory i.e. C:\Gradle\gradle-6.0.1 (knowing that the gradle.exe is actually in C:\Gradle\gradle-6.0.1\bin\gradle.exe)

On the menu pick Team > Git > Clone

Enter the Repository URL https://github.com/richardeigenmann/JPO.git and click Next

On the panel the tick should be on the "master" branch. Click Next > Finish

To run the application, click on Projects in the left Panel and expand the JPO project in the left panel, expand the Build Scripts item and click on the green build.gradle item. In the Navigator panel underneath, the various Gradle tasks will appear. Click on Build > run to launch the app.

Architecture

JPO is a Java Swing application which uses the Guava EventBus
to order and fulfil the GUI tasks.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.