OPTIMA35 (Organizing, Processing, Tweaking Images and Modifying scanned Analogs from 35mm Film) is a Python-based project designed to provide a streamlined way to manage and edit metadata and images from analog photography. But can be used for any images.
Find a file
2025-01-02 10:05:50 +00:00
config A few more examples. 2024-12-31 13:07:27 +01:00
media Updated GUI and TUI preview. 2024-12-31 13:07:27 +01:00
optima Minor changes 2024-12-31 13:07:27 +01:00
ui Disabled restart button, still use it for development. 2024-12-31 13:07:27 +01:00
utils Feature/gui 2024-12-30 20:19:49 +00:00
.gitignore Adjusted for exif and tui settings file. 2024-12-31 13:07:27 +01:00
CHANGELOG.md v0.4.1 2024-12-31 13:07:27 +01:00
gui.py Main starts either GUI or TUI. UI split from optima35. 2024-12-31 13:07:27 +01:00
LICENSE.md Feature/gui 2024-12-30 20:19:49 +00:00
main.py Main starts either GUI or TUI. UI split from optima35. 2024-12-31 13:07:27 +01:00
README.md Adding information about version handeling. 2025-01-02 10:05:50 +00:00
requirements_gui.txt Generating two requirments file for TUI and GUI. 2024-12-31 13:33:22 +01:00
requirements_tui.txt Generating two requirments file for TUI and GUI. 2024-12-31 13:33:22 +01:00
tui.py Fixed default folder and type. 2024-12-31 13:07:27 +01:00

OPTIMA-35

Overview

OPTIMA-35 (Organizing, Processing, Tweaking Images, and Modifying scanned Analogs from 35mm Film) is a Python-based project designed to streamline the management and editing of metadata and images from analog photography. While it was created with analog photography in mind, it is versatile enough to handle any type of images.

This project replaces my earlier analogphotography bash script collection, which has now been archived in favor of OPTIMA-35.

OPTIMA-35 is a cross-platform program. The GUI works on Linux and Windows(1) and is expected to run on macOS. The TUI is currently Linux-only, as its dependency is exclusive to Linux.

(1): Windows' default image viewer has limitations in displaying some EXIF metadata. Use dedicated software for full EXIF data visibility.

Current Status

Development and Versioning Notes

OPTIMA-35 is currently in an alpha stage and under active development. As a result:

  • The README may occasionally be outdated.
  • Users are encouraged to check for new branches and read the CHANGELOG, which is consistently updated and well-documented.
  • Bugs or unforeseen behavior may occur.

While the project follows a semantic versioning structure (major.minor.patch), breaking changes—typically reserved for major version increments—may also occur in minor version updates during this development phase. Please review the changelog carefully before updating.

OPTIMA-35 supports two modes: GUI and TUI.

  • The GUI is loaded by default if PySide6 is available.
  • The TUI serves as a fallback when PySide6 is unavailable or can be started explicitly using the --tui option with main.py.

While all features are implemented and functional, the designs of both the GUI and TUI are not yet finalized. Some safety checks are still under development.

Available Features:

Implemented Features:

  • Image Processing:
    • Resizing
    • Renaming with order adjustment
    • Grayscale conversion
    • Brightness adjustment
    • Contrast adjustment
  • EXIF Management:
    • Copy EXIF data
    • Add custom EXIF information
    • Add GPS data
    • Add a date to EXIF
    • Remove EXIF
  • Watermarking

Preview GUI

GUI for OPTIMA-35 with KvArcDark theme on Linux

Main windows

main_tab{width=40%}

Exif tab when opened, settings disabled by default

exif_tab_disabled{width=40%}

Exif tab after enabeling own exif data

exif_tab_enabled{width=40%}

Dialog window to modify exif file without need to open yaml file

exifeditor{width=40%}

Preview TUI

asciinema recording for TUI

demo_gif

Dependencies

OPTIMA-35 has two modes: GUI and TUI. Each mode has its own set of dependencies, so you dont need to install TUI dependencies if you only plan to use the GUI (and vice versa).

Required Dependencies:

  • pyyaml: For handling YAML files (configuration and settings).
  • piexif: For reading, modifying, and writing EXIF metadata.
  • pillow: For image processing.
  • pyside6: For the GUI mode.
  • simple_term_menu: For the TUI mode.

Installing Dependencies

You can install the dependencies using the respective requirements file for your desired mode (TUI or GUI).

Using pip:

pip install -r requirements_gui.txt

Alternatively, if you use conda or its alternatives (anaconda, mamba, micromamba), run:

conda install -c conda-forge --file requirements_gui.txt

Use of LLMs

In the interest of transparency, I disclose that Generative AI (GAI) large language models (LLMs), including OpenAIs ChatGPT and Ollama models (e.g., OpenCoder and Qwen2.5-coder), have been used to assist in this project.

Areas of Assistance:

  • Project discussions and planning
  • Spelling and grammar corrections
  • Suggestions for suitable packages and libraries
  • Guidance on code structure and organization

In cases where LLMs contribute directly to code or provide substantial optimizations, such contributions will be disclosed and documented in the relevant sections of the codebase.

Ollama

  • mradermacher gguf Q4K-M Instruct version of infly/OpenCoder-1.5B
  • unsloth gguf Q4K_M Instruct version of both Qwen/QWEN2 1.5B and 3B

References

  1. Huang, Siming, et al. OpenCoder: The Open Cookbook for Top-Tier Code Large Language Models. 2024. PDF

  2. Hui, Binyuan, et al. Qwen2.5-Coder Technical Report. arXiv preprint arXiv:2409.12186, 2024. arXiv

  3. Yang, An, et al. Qwen2 Technical Report. arXiv preprint arXiv:2407.10671, 2024. arXiv