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 (158)
      • AI (1)
      • Bezpieczeństwo (20)
        • Model AAA (7)
        • Szyfrowanie (1)
      • CCTV (3)
      • Hardware (2)
      • Podstawy informatyki (1)
      • Sieci (47)
        • Cisco (4)
          • Obsługa haseł (2)
        • MikroTik (8)
        • Monitorowanie sieci (3)
        • Pomiary w sieciach LAN (6)
          • iptraf-ng (3)
        • Protokół ARP (5)
        • Symulator sieci GNS3 (5)
        • Tunelowanie ruchu (6)
          • Tunele GRE (2)
          • Tunele SSH (4)
        • WLAN / WiFi (7)
      • Software (78)
        • Bazy danych (13)
        • Programowanie (21)
        • Systemy operacyjne (21)
          • Linux Debian (18)
        • Windows (8)
      • Wirtualizacja (26)
  • Ostatnie wpisy

    • Opencode – darmowe kredyty
    • Tunel SSH – zwrotny (remote forwading)
    • GNS3 – Interfejsy sieciowe
    • GNS3 – Konfiguracja urządzenia IOU (L2/L3)
    • Tunel GRE + EoIP na Cisco
  • Strona odwiedzona

    od 11.01.2013

  • Doskonała platforma e-learningowa Uzyskaj certyfikat IT

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

Powered by
Necessary cookies enable essential site features like secure log-ins and consent preference adjustments. They do not store personal data.
None
Functional cookies support features like content sharing on social media, collecting feedback, and enabling third-party tools.
None
Analytical cookies track visitor interactions, providing insights on metrics like visitor count, bounce rate, and traffic sources.
None
Advertisement cookies deliver personalized ads based on your previous visits and analyze the effectiveness of ad campaigns.
None
Unclassified cookies are cookies that we are in the process of classifying, together with the providers of individual cookies.
None
Powered by