Applicazione desktop Windows (WPF, .NET 8) per la generazione di immagini tramite l'API Gemini
(modelli gemini-3.1-flash-image "Nano Banana 2", Flash Lite e Pro 4K), con supporto a code di
richieste, elaborazione in batch e storico delle generazioni.
- Generazione singola: prompt testuale, scelta modello, aspect ratio (1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 21:9) e risoluzione (1K/2K/4K a seconda del modello).
- Coda batch: fino a 3 prompt per job tramite il Batch API di Gemini, con modello bloccato per l'intero job.
- Finestra Coda: stato di ogni job/prompt (in coda, in corso, completato, fallito, annullato, scaduto), filtri, anteprima immagine, riscaricamento, annullamento job.
- Polling in background: monitoraggio dei job batch anche a finestra chiusa, con icona e notifiche nella system tray al completamento.
- Storico: registro persistente (JSONL) di tutte le generazioni singole e batch, con filtri, apertura file/cartella ed esportazione/importazione per portare lo storico su un altro PC.
- Windows 10/11
- .NET 8 SDK (per compilare/eseguire da sorgente)
- Una API key di Google AI Studio
dotnet run
Al primo avvio viene richiesta l'API key, salvata in %AppData%\QuickNanoB\config.json.
La chiave non viene mai scritta nel repository ne' inclusa nei sorgenti.
dotnet build -c Release
Un piccolo set di test unitari (xUnit) copre la logica pura senza effetti collaterali
(normalizzazione nomi file, clamp della risoluzione, parsing difensivo delle risposte del
Batch API): non tocca %AppData% ne' richiede una API key.
dotnet test
dotnet publish -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true
Produce un eseguibile unico (QuickNanoB.exe) in
bin\Release\net8.0-windows\win-x64\publish\, senza bisogno del runtime .NET installato sulla
macchina di destinazione.
QuickNanoB non usa database esterni: tutto lo stato e' salvato in file locali sotto
%AppData%\QuickNanoB\:
| File | Contenuto |
|---|---|
config.json |
API key, modello/aspect ratio/risoluzione predefiniti, cartella di salvataggio |
batch_jobs.json |
Job batch in corso/recenti e relativo stato |
registry.jsonl |
Storico di tutte le generazioni (una riga JSON per immagine) |
Applicazione WPF a finestra singola (MainWindow) con finestre satellite (QueueWindow,
HistoryWindow, ApiKeyWindow, ErrorWindow). I client REST verso l'API Gemini sono in
GeminiClient.cs (generazione singola) e GeminiBatchClient.cs (Batch API); BatchPoller.cs
gestisce il polling periodico e le notifiche di sistema.
Le segnalazioni di bug e le proposte di miglioramento sono benvenute tramite Issue. Per le
pull request: mantieni lo stile del codice esistente (nessuna dipendenza NuGet esterna oltre
all'SDK WPF/.NET), evita di introdurre segreti o percorsi assoluti specifici di una macchina, e
verifica che dotnet build -c Release completi senza errori/avvisi prima di aprire la PR.
Distribuito sotto licenza GNU GPLv3.