OptimaLab35/README.md

118 lines
4.6 KiB
Markdown
Raw Normal View History

2024-12-17 11:25:44 +00:00
# OPTIMA-35
2024-12-10 15:39:10 +01:00
2024-12-17 11:25:44 +00:00
## Overview
2024-12-10 15:39:10 +01:00
**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.
2024-12-10 15:44:44 +01:00
This project replaces my earlier [analogphotography](https://gitlab.com/sf-bashscripts/analogphotography) bash script collection, which has now been archived in favor of OPTIMA-35.
2024-12-10 15:44:44 +01:00
**OPTIMA-35** is a cross-platform program. The **GUI** works on Linux and Windows (tested) and is expected to run on macOS. The **TUI** is currently Linux-only, as its dependency is exclusive to Linux.
2024-12-17 11:25:44 +00:00
2024-12-30 20:19:49 +00:00
## Current Status
2024-12-30 20:19:49 +00:00
### PLEASE NOTE
The project is under active development. As a result:
- The README may sometimes be outdated.
- I encourage you to check for new branches and read the **CHANGELOG**, which is consistently updated and well-documented.
- Bugs or unforeseen behavior may occur.
2024-12-30 20:19:49 +00:00
**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.
2024-12-30 20:19:49 +00:00
2024-12-27 20:55:20 +00:00
### 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](https://gitlab.com/python_projects3802849/optima-35/-/raw/main/media/main_tab.png){width=40%}
**Exif tab when opened, settings disabled by default**
![exif_tab_disabled](https://gitlab.com/python_projects3802849/optima-35/-/raw/main/media/exif_tab_disabled.png){width=40%}
**Exif tab after enabeling own exif data**
![exif_tab_enabled](https://gitlab.com/python_projects3802849/optima-35/-/raw/main/media/exif_tab_enabled.png){width=40%}
**Dialog window to modify exif file without need to open yaml file**
![exifeditor](https://gitlab.com/python_projects3802849/optima-35/-/raw/main/media/exifeditor.png){width=40%}
### Preview TUI
**asciinema recording for TUI**
![demo_gif](https://gitlab.com/python_projects3802849/optima-35/-/raw/main/media/demo_v041.gif)
2024-12-17 11:25:44 +00:00
## 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).
2024-12-17 11:25:44 +00:00
**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.
2024-12-17 11:25:44 +00:00
### Installing Dependencies
You can install the dependencies using the respective requirements file for your desired mode (**TUI** or **GUI**).
2024-12-17 11:25:44 +00:00
Using `pip`:
2024-12-17 11:25:44 +00:00
```bash
pip install -r requirements_gui.txt
2024-12-17 11:25:44 +00:00
```
Alternatively, if you use **conda** or its alternatives (**anaconda**, **mamba**, **micromamba**), run:
2024-12-17 11:25:44 +00:00
```bash
conda install -c conda-forge --file requirements_gui.txt
2024-12-17 11:25:44 +00:00
```
2024-12-10 15:39:10 +01:00
# 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.
2024-12-10 15:39:10 +01:00
## 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.
2024-12-30 20:19:49 +00:00
**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
2024-12-17 11:25:44 +00:00
### References
1. **Huang, Siming, et al.**
*OpenCoder: The Open Cookbook for Top-Tier Code Large Language Models.*
2024. [PDF](https://arxiv.org/pdf/2411.04905)
2. **Hui, Binyuan, et al.**
*Qwen2.5-Coder Technical Report.*
*arXiv preprint arXiv:2409.12186*, 2024. [arXiv](https://arxiv.org/abs/2409.12186)
3. **Yang, An, et al.**
*Qwen2 Technical Report.*
*arXiv preprint arXiv:2407.10671*, 2024. [arXiv](https://arxiv.org/abs/2407.10671)