Apollo Captioner is a lightweight desktop application for browsing a folder of images and adding or editing captions. Built with PyQt6, it saves captions alongside each image in simple text files.
- Browse images in a configurable folder with automatic thumbnail generation and aspect ratio preservation (ScalableImageLabel) fileciteturn1file0
- Visual indicators for images that have captions (✓) or not (✗) in the gallery view fileciteturn1file0
- Adjust thumbnail tile size dynamically with a slider
- Edit captions in-place with keyboard and button navigation (Previous, Next, Back to Gallery)
- Copy the displayed image to the clipboard for easy sharing
- Persists the last-used image folder in
config.jsonfileciteturn1file2
- Python 3.8 or higher
- PyQt6
-
Clone this repository:
git clone https://github.com/yourusername/apollo-captioner.git cd apollo-captioner -
Create and activate a virtual environment (recommended):
python -m venv venv source venv/bin/activate # Linux/macOS venv\Scripts\activate # Windows
-
Install dependencies:
pip install PyQt6
The application stores its configuration in config.json at the root:
{
"folder": "<path/to/your/image/folder>"
}- On first run, or if the folder path is invalid, you'll be prompted to select an image folder.
- You can also edit
config.jsondirectly to set a default folder before launching.
Run the application:
python main.py- Gallery View: Browse thumbnails, adjust tile size, reload or change folder.
- Caption View: Double-click a thumbnail (or press Enter) to open the caption editor. Use the Back, Previous, Next, and Copy Image buttons to navigate and manage captions.
- Captions are saved as
.txtfiles alongside each image.
├── main.py # Application entry point and UI logic fileciteturn1file0
├── config.json # Stores last-used image folder fileciteturn1file2
├── icons/ # Application icon (apollo_captioner.ico)
└── README.md # This documentation
To build a standalone executable, you can use PyInstaller:
pip install pyinstaller
pyinstaller --onefile --add-data "icons/apollo_captioner.ico;icons" main.pyThe resulting executable will include the icon and all dependencies.
Contributions are welcome! Feel free to:
- Open issues for bugs or feature requests
- Submit pull requests
Please follow the existing code style and include tests where applicable.
This project is licensed under the MIT License. See the LICENSE file for details.