OptimaLab35
Developed on my forgejo instance, GitLab is used as backup.
Overview
OptimaLab35 enhances OPTIMA35 (Organizing, Processing, Tweaking Images, and Modifying scanned Analogs from 35mm Film) by offering a user-friendly graphical interface for efficient image and metadata management.
It serves as a GUI for the optima35 library, providing an intuitive way to interact with the core functionalities.
Current Status
The program has reached a stable release. All functions have been tested, and there should be no bugs. While there is always room for additional features and optimizations, the core functionality is complete and reliable.
Features
Image Processing
- Resize images (upscale or downscale)
- Convert to different image file (jpg, png, webp)
- Convert images to grayscale
- Adjust brightness and contrast
- Add customizable text-based watermarks
Image Preview
- Load a single image and see how changes in brightness and contrast affect the image
EXIF Management
- Add EXIF data using a simple dictionary
- Copy EXIF data from the original image
- Remove EXIF metadata completely
- Add timestamps (e.g., original photo timestamp)
- Automatically adjust EXIF timestamps based on image file names
- Add GPS coordinates to images
Settings
- Option to use
PyQtDarkThemeand select Dark, Light, or auto theme - Checks for updates on PyPI, automatically downloads and installs the latest version
Installation
Install via pip (dependencies are handled automatically):
pip install OptimaLab35
OR
with my install script that uses micromamba to setup and env and create desktop shortcut, read more here.
"${SHELL}" <(curl -L https://code.boxyfoxy.net/CodeByMrFinchum/OptimaLab35-installer/raw/branch/main/OL35-installer.sh)
Tip: You can paste the URL into your browser to review the script before running it - you should never blindly execute random scripts from the internet.
Performance Note
I recommend using standard Python rather than PyPy. I ran a small-scale test measuring how long it took to convert images using Python 3.13.2 and PyPy 7.3.15 (Python 3.9.18). Surprisingly, Python was 2-5% faster than PyPy. This is most likely because the program uses PySide6, which relies on CPython extensions that do not benefit from PyPy's JIT optimizations. Additionally, since the program uses PySide6's multithreading, we actually lose performance under PyPy.
Troubleshooting
At this time, there is no direct contact method available. However, since this repository is mirrored on GitLab, you can report any issues or bugs by opening an issue there. I will receive a notification and respond as soon as possible.
Ubuntu and Derivatives - qt.qpa.plugin Error
Users running Ubuntu or its derivative distributions (such as Zorin OS, Linux Mint, etc.) may encounter an error with PySide6 (6.5.0) related to the Qt xcb platform plugin. This issue occurs when the required library libxcb-cursor0 (or sometimes xcb-cursor0) is missing.
To resolve this, install the package using the following command in your terminal:
sudo apt install libxcb-cursor0
Note: Depending on your distribution, this package might not appear in the graphical software center, as many of these only display Snap or Flathub applications.
GUI Preview
The layout remains consistent with v1.0.0, with minor improvements applied. The preview reflects v1.7. The UI is OS-dependent, but a custom theme can be enabled in the settings. (Minor visual differences may appear across different operating systems.)
Main tab
Exif tab
Preview window
Settings
Updater
Most reason changelog
See complete changelog here
1.8.x
1.8.2: Patch - removing changelog from source (25.11.03)
- Moving the changelog to the wiki.
- This will make it easier in the future to update the changelog, fixing spelling in the changelog will no longer make a version bump.
1.8.1: Bug fix - changed python version (25.11.03)
- Changed the dependency of python in the pyproject.toml to fit with pyside6 since we need pyside6.
- With python v3.14 we getting error that dependencies can't be meet.
1.8.0: Feature - Adding wiki and reform readme (25.09.29)
- Trimmed readme and moved some content to the wiki.
- About now linkes to Forgejo not GitLab, and the new wiki.
- pip readme also contains link to wiki.
1.7.x
1.7.1: Incorrect version pump... (25.09.29)
- See changelog 1.8.0, was a problem in the git comment cousing wrong version pump...
1.7.0: Feature - Automatically Add Missing EXIF Fields (25.08.13)
- Between versions 1.5 and 1.6, two new EXIF fields were introduced:
developerandtime. - If these fields were missing in the local EXIF file, the program would still load but crash when processing an image.
- Previously, this could be fixed manually by adding the missing fields, something I could easily do myself, but not ideal for other users.
- The program now automatically checks if the local EXIF file has these fields, and if not, it adds them with default values.
- This might make it easier in the future to adjust local files.
1.6.x
1.6.0: Feature - Add Information from Developing Process (25.08.13)
- Added two new combo boxes: one for film developer and one for development time (how long the film was developed).
- The film developer field accepts all characters, while the time field only accepts
NAormm:ss. - Improved EXIF Edit Window: Pressing Enter (Return) now adds the new item to the list, just like pressing the Add button.









