aboutsummaryrefslogtreecommitdiffstats
path: root/README.md
blob: 81f322fbc41f9cc555dcc1cd2c99886f9ba17776 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# upscale-qt

Small PyQt6 app to upscale an image with an ESRGAN model through `sd-cli` (stable-diffusion.cpp). A slider wipe compares before and after, and the result can be saved as a new file or written over the original.

## Requirements

- Python 3
- PyQt6
- `sd-cli` from stable-diffusion.cpp, plus one or more ESRGAN upscaler models in a folder

## Usage

    ./upscale-qt [image]

- Open an image (Ctrl+O, or pass it as argument). EXIF rotation is applied.
- Pick a model and Upscale (Ctrl+U). Expect roughly 25 seconds per megapixel of input; the result is 4x in each direction.
- The view shows before left of the divider and after right of it. Drag the divider to wipe, drag elsewhere to pan, mouse wheel to zoom, double-click to fit.
- Save As (Ctrl+Shift+S) writes a new file. Overwrite replaces the original after a confirmation, in the same format. EXIF metadata is not kept.
- Clear (Ctrl+W) empties the view and deletes the temp files. It asks first if the upscaled image was not saved.
- Settings holds the upscalers folder.
- Ctrl+Q quits. Quitting or closing the window asks first if an upscale is running or the upscaled image was not saved.

### Model descriptions

Put a `models.txt` next to the models to show what each one is for in the dropdown:

    # filename = what it is for
    some_model_x4.pth = Clean photos: people, nature
    other_model_x4.pth = Noisy or compressed photos

Models without a line show their filename.

## License

Copyright (C) 2026 Danilo M. <danix@danix.xyz>

GPLv2 only. See [LICENSE](LICENSE) for the full text.

## Development Approach

This project is developed using AI-assisted tools. Code is generated with the help of AI based on human-provided specifications, design decisions, and iterative feedback.

All contributions are reviewed, tested, and curated by the maintainer before being included in the codebase. AI is used as a productivity and exploration tool, while human oversight remains central to all decisions.

The goal is to combine the flexibility of AI-assisted development with standard open-source practices such as transparency, review, and accountability.