ITBlog

IT Blog w tematach różnych...

  • O blogu…
  • Edukacja
    • Moodle – stare
    • Moodle2
    • Testy
    • Wykłady IT
  • Firma

nanogen – generowanie obrazów za pomocą NanoBanana ale przez WWW

Napisane przez Igor Brzeżek on 15 czerwca 2026
Napisane w: Programowanie.

Contents
  1. Automatyczne generowanie obrazów AI
  2. Do czego służy Nanogen?
  3. Jak to działa?
  4. Wymagania
  5. Instalacja i przygotowanie
  6. Uruchomienie Chrome w trybie debugowania
  7. Użycie podstawowe
  8. Format pliku wejściowego JSON
  9. Opcje wiersza poleceń – szczegółowy opis
  10. Wejście / Wyjście
  11. Modyfikatory promptu
  12. Opcje generowania
  13. Wykonanie i czas
  14. Połączenie
  15. Wyświetlanie
  16. Pełne przykłady użycia
  17. 1. Podstawowe generowanie z kolorowym wyjściem
  18. 2. Batch z proporcją 16:9 i statystykami
  19. 3. Tryb tymczasowy z modelem Thinking (rozszerzone myślenie)
  20. 4. Szerokość z proporcją 4:3
  21. 5. Tryb symulacji – podgląd promptów bez przeglądarki
  22. 6. Batch z losowymi opóźnieniami i debugiem
  23. 7. Produkcyjny batch – skip, restart, logi i statystyki
  24. Mechanizm blokady instancji
  25. Obsługa błędów i niezawodność
  26. Pliki pomocnicze
  27. Podsumowanie

Automatyczne generowanie obrazów AI

Nanogen to narzędzie napisane w Pythonie, które automatyzuje generowanie obrazów za pomocą AI Google Gemini (model Imagen) w interfejsie przeglądarki ale hurtowo i z linii poleceni (CLI). Działa przez protokół Chrome DevTools (CDP) – nie wymaga żadnego klucza API ale wymaga konta GOOGLE. Wczytuje prompt z wiersza poleceń lub pliku JSON, wysyła go do Gemini, czeka na wygenerowany obraz i pobiera go na dysk. Pozwala na wsadowe przetwarzanie setek promptów bez ręcznego klikania.

GitHub: github.com/IgorBrzezek/nanogen

Spis treści
  1. Nanogen – automatyzacja generowania obrazów AI z linii poleceń
  2. Do czego służy Nanogen?
  3. Jak to działa?
  4. Wymagania
  5. Instalacja i przygotowanie
  6. Uruchomienie Chrome w trybie debugowania
  7. Użycie podstawowe
  8. Format pliku wejściowego JSON
  9. Opcje wiersza poleceń – szczegółowy opis
  10. Wejście / Wyjście
  11. Modyfikatory promptu
  12. Opcje generowania
  13. Wykonanie i czas
  14. Połączenie
  15. Wyświetlanie
  16. Pełne przykłady użycia
  17. Mechanizm blokady instancji
  18. Obsługa błędów i niezawodność
  19. Pliki pomocnicze
  20. Podsumowanie

Do czego służy Nanogen?

Nanogen rozwiązuje problem ręcznego generowania obrazów w Gemini – zamiast wklejać prompt, czekać i zapisywać obraz ręcznie, robi to automatycznie w pętli. Przydaje się w wielu scenariuszach:

  • Batch processing – generujesz setki obrazów z pliku JSON, program robi wszystko sam.
  • Testowanie promptów – szybkie sprawdzanie różnych wariantów z różnymi modelami (Flash, Thinking, Pro).
  • Automatyzacja feedów – generowanie ilustracji do artykułów, mediów społecznościowych, prezentacji.
  • Eksperymenty z AI – porównywanie rezultatów dla różnych proporcji, rozdzielczości i modeli.

Jak to działa?

  1. Chrome jest uruchamiany w trybie zdalnego debugowania na porcie 9222 (skrypt start_chrome_debug.bat) i zalogowany na https://gemini.google.com/.
  2. Nanogen łączy się z tą instancją Chrome przez CDP za pomocą biblioteki Playwright.
  3. Dla każdego promptu skrypt:
    • Nawiguje do Gemini (lub używa istniejącej karty).
    • Rozwija lewe menu boczne.
    • Opcjonalnie włącza Czat tymczasowy (--gen tmp), aby każdy prompt startował w czystej konwersacji.
    • Opcjonalnie wybiera model (--type) i poziom myślenia (--thinking).
    • Otwiera menu Narzędzia i klika „Twórz obrazy”, aby przejść w tryb Imagen.
    • Dopina tekst modyfikujący (--addprompt / --insprompt) oraz instrukcje proporcji i rozdzielczości (--fmt, --res, --resx, --resy).
    • Wkleja gotowy prompt do pola wejściowego Gemini i wysyła.
    • Czeka na pojawienie się obrazu, a następnie klika przycisk pobierania.
    • Pobiera obraz w pełnej rozdzielczości przez wbudowany mechanizm pobierania Chrome.
    • W razie braku przycisku pobierania stosuje awaryjne metody: ekstrakcję z canvas lub bezpośrednie fetchowanie URL obrazu.
  4. Szczegółowy log wykonania może być zapisany (--log), a całe wyjście konsoli (--savescr).
  5. Plik blokady nanogen.lock zapobiega jednoczesnemu uruchamianiu wielu instancji.

Wymagania

  • Python 3.8+
  • Google Chrome lub Chromium
  • Biblioteki Python: playwright, colorama, opcjonalnie Pillow (dla --stat) i requests (awaryjne pobieranie)
  • System Windows (skrypt .bat do uruchamiania Chrome; na Linux/macOS trzeba uruchomić Chrome ręcznie z odpowiednimi flagami)

Instalacja i przygotowanie

pip install playwright colorama pillow requests
playwright install

Uruchomienie Chrome w trybie debugowania

UWAGA: Skrypt start_chrome_debug.bat zabija wszystkie procesy Chrome na komputerze. Zapisz pracę przed uruchomieniem.

Skrypt wykonuje następujące kroki:

  1. Zabija wszystkie procesy chrome.exe przez taskkill /F /IM chrome.exe /T.
  2. Uruchamia Chrome z flagami:
    • --remote-debugging-port=9222 – włącza protokół CDP.
    • --user-data-dir="C:\chrome_dev_profile" – dedykowany profil (dane logowania są trwale przechowywane).
    • Otwiera https://gemini.google.com/.
  3. Czeka na potwierdzenie użytkownika.

Przy pierwszym uruchomieniu zaloguj się do Google w otwartym oknie Chrome i upewnij, że Gemini jest dostępny. Nie zamykaj tego okna podczas działania Nanogen. Nie otwieraj innych okien Chrome – mogą zakłócić połączenie CDP.

Użycie podstawowe

Pojedynczy prompt:

python nanogen.py --prompt "Górski krajobraz o zachodzie słońca" --color

Batch z pliku JSON:

python nanogen.py --in prompts.json --out generated_images --color

Format pliku wejściowego JSON

Nanogen akceptuje dwa formaty:

Słownik (dict) – klucz = nazwa pliku, wartość = prompt:

{
  "gory": "Górski krajobraz o zachodzie słońca, hiperrealistyczny",
  "ocean": "Spokojny widok oceanu, kinowe oświetlenie"
}

Lista obiektów z polami filename i prompt:

[
  {
    "filename": "gory",
    "prompt": "Górski krajobraz o zachodzie słońca, hiperrealistyczny"
  },
  {
    "filename": "ocean",
    "prompt": "Spokojny widok oceanu, kinowe oświetlenie"
  }
]

Opcje wiersza poleceń – szczegółowy opis

Wejście / Wyjście

Opcja Opis
--prompt TEKST Pojedynczy prompt tekstowy do generowania obrazu.
--in PLIK Plik JSON z promptami (słownik lub lista – patrz wyżej).
--out KATALOG Katalog wyjściowy dla obrazów (domyślnie: bieżący).
--outauto Automatycznie utwórz katalog wyjściowy o nazwie pliku JSON (bez rozszerzenia). Wymaga --in.

Modyfikatory promptu

Opcja Opis
--addprompt TEKST Tekst dodawany na końcu każdego promptu (np. „Hyper realistic, 8K”).
--insprompt TEKST Tekst dodawany na początku każdego promptu (np. „Generate an image of”).

Opcje generowania

Opcja Opis
--fmt PROPORCJA Proporcje obrazu: 43 (4:3), 169 (16:9), 11 (1:1).
--res SZER, WYS Rozdzielczość w pikselach (np. 1920,1080). Wyklicza się z --resx i --resy.
--resx SZER Szerokość w pikselach; wysokość liczona z --fmt (domyślnie 16:9).
--resy WYS Wysokość w pikselach; szerokość liczona z --fmt (domyślnie 16:9).
--type TYP Model: fast (Flash), think (Thinking), pro (Pro), flash (Gemini Flash), flash-lite (Flash-Lite).
--thinking TRYB Poziom myślenia: basic (Standardowy) lub extended (Rozszerzony).
--gen TRYB Tryb czatu: chat (standardowy, domyślnie), tmp (tymczasowy – każdy prompt w nowej sesji), native (bieżący kontekst bez zmian).

Wykonanie i czas

Opcja Opis Domyślnie
--promptint MS Stałe opóźnienie między promptami w milisekundach. 1000
--promptrnd MIN,MAX Losowy zakres opóźnienia w ms (np. 2000,5000). Nadpisuje --promptint. –
--simul Tryb symulacji – pokazuje, co zostanie wysłane, bez łączenia się z przeglądarką. –
--overwrite Nadpisuj istniejące pliki bez pytania. –
--skip Automatycznie pomiń prompt, jeśli plik wyjściowy już istnieje. –
--noex Nie dodawaj rozszerzenia .png do nazw plików. –
--retry N Liczba ponownych prób w przypadku błędu generowania. 0
--mingentime N Minimalny czas oczekiwania (sekund) na wygenerowanie obrazu przed sprawdzeniem przycisku pobierania. 30
--dltime N Timeout (sekund) na pobranie obrazu. 45
--dlret N Liczba ponownych prób pobierania. 3
--dlrestart N Restartuj cały proces generowania w przypadku błędu (wymaga --skip). 0
--limitwait N Czas oczekiwania (sekund) przy rate limicie Gemini. 300

Połączenie

Opcja Opis Domyślnie
--host HOST Host Chrome DevTools Protocol. localhost
--port PORT Port Chrome DevTools Protocol. 9222

Wyświetlanie

Opcja Opis
--color Włącz kolorowe wyjście w terminalu.
--debug Tryb debugowania – szczegółowe komunikaty.
--stat Pokazuj statystyki dla każdego obrazu (czas generowania, rozdzielczość, rozmiar pliku w KiB).
--savescr [PLIK] Zapisz całe wyjście konsoli do pliku. Jeśli pominięto nazwę, pochodzi z --in (.scr) lub nanogen.scr.
--log [PLIK] Zapisz log wykonania z listą obrazów i podsumowaniem. Jeśli pominięto nazwę, pochodzi z --in (.log) lub nanogen.log.

Pełne przykłady użycia

1. Podstawowe generowanie z kolorowym wyjściem

python nanogen.py --prompt "Zachód słońca nad morzem" --color

2. Batch z proporcją 16:9 i statystykami

python nanogen.py --in prompts.json --type think --fmt 169 --res 1920,1080 --stat --color

3. Tryb tymczasowy z modelem Thinking (rozszerzone myślenie)

python nanogen.py --prompt "Fantastyczny smok" --gen tmp --type think --thinking extended --color

4. Szerokość z proporcją 4:3

python nanogen.py --prompt "Portret robota" --type fast --fmt 43 --resx 1024 --color

5. Tryb symulacji – podgląd promptów bez przeglądarki

python nanogen.py --in prompts.json --type pro --fmt 11 --simul

6. Batch z losowymi opóźnieniami i debugiem

python nanogen.py --in prompts.json --promptrnd 2000,5000 --debug --color

7. Produkcyjny batch – skip, restart, logi i statystyki

python nanogen.py --in big_batch.json --out output --skip --dlrestart 3 --log --savescr --stat --color

Mechanizm blokady instancji

Nanogen tworzy plik nanogen.lock przy starcie i usuwa go przy wyjściu. Jeśli inna instancja jest uruchomiona, nowa czeka, aż ta pierwsza zakończy działanie. Mechanizm zapobiega konfliktom przeglądarki, gdy wiele procesów próbuje jednocześnie korzystać z tego samego okna Chrome.

Obsługa błędów i niezawodność

  • Rate limiting – gdy Gemini zwróci błąd limitów, Nanogen czeka (--limitwait, domyślnie 300 s) i ponawia do 3 razy.
  • Ponawianie pobierania – jeśli kliknięcie przycisku pobierania nie zadziała lub plik ma 0 bajtów, skrypt ponawia (--dlret).
  • Pełny restart – z flagą --dlrestart, jeśli pobieranie nie powiedzie się po wszystkich próbach, skrypt uruchamia się ponownie z --skip, aby nie generować już udanych obrazów od nowa.
  • Awaryjne metody pobierania – jeśli przycisk pobierania jest niedostępny, Nanogen próbuje ekstrakcji z canvas, a następnie bezpośredniego fetchowania URL obrazu.
  • Błędy nawigacji – skrypt radzi sobie z ERR_ABORTED i innymi błędami nawigacji przez ponawianie.

Pliki pomocnicze

Plik Opis
start_chrome_debug.bat Skrypt uruchamiający Chrome z CDP na porcie 9222.
example.json Przykładowy plik JSON z promptami generującymi obrazy.
example_image_prompt.md Opis tworzenia promptów do obrazów.
img_prompt_example.txt Przykładowy plik z promptem do wykorzystania z innym AI.
page.cmd Przykładowy skrypt do sekwncyjnego generowania  obrazów z wielu plików JSON.
page.html / page.json / style.css Pliki pomocnicze (np. do podglądu wyników).
nanogen.lock Plik blokady – automatycznie usuwany przy wyjściu.

Podsumowanie

Nanogen to praktyczne narzędzie dla każdego, kto regularnie generuje obrazy w Gemini i chce zautomatyzować ten proces. Dzięki sterowaniu przez CDP nie wymaga klucza API ani żadnych dodatkowych usług – wystarczy przeglądarka Chrome i konto Google. Bogaty zestaw opcji (wybór modelu, proporcje, rozdzielczość, modyfikatory promptów, logowanie, statystyki) sprawia, że sprawdzi się zarówno w codziennych eksperymentach, jak i w produkcyjnych pipeline’ach generowania setek obrazów.

Źródła: github.com/IgorBrzezek/nanogen

Nawigacja

← ClipSave – zapisywanie obrazów ze schowka systemu Windows
Generator LOTTO i różne statystyki →
  • Szukaj

  • Kategorie

    • IT ogólnie (147)
      • Bezpieczeństwo (19)
        • Model AAA (7)
        • Szyfrowanie (1)
      • CCTV (3)
      • Hardware (2)
      • Podstawy informatyki (1)
      • Sieci (35)
        • Cisco (4)
          • Obsługa haseł (2)
        • MikroTik (8)
        • Pomiary w sieciach LAN (6)
          • iptraf-ng (3)
        • Protokół ARP (5)
        • Symulator sieci GNS3 (3)
        • WLAN / WiFi (5)
      • Software (78)
        • Bazy danych (13)
        • Programowanie (21)
        • Systemy operacyjne (21)
          • Linux Debian (18)
        • Windows (8)
      • WiFi (2)
      • Wirtualizacja (26)
  • Ostatnie wpisy

    • WinScreen czyli terminal z wirtualnymi oknami
    • Style Mover czyli przenoszenie stylów HTML
    • Generator obrazów AI za pomocą API
    • Generator modulacji AM i FM
    • Generator plików tekstowych i binarnych
  • Strona odwiedzona

    od 11.01.2013

  • Doskonała platforma e-learningowa Uzyskaj certyfikat IT

Proudly powered by WordPress Theme: Parament by Automattic.
7ads6x98y