GeminiWatermarkTool — зачем и как использовать
Проблема
Nano Banana 2 (Gemini 3 Flash Image) добавляет невидимый цифровой водяной знак (SynthID) и видимый водяной знак на все сгенерированные изображения. Для презентаций в sli.dev видимый ватермарк — это мусор на слайде, который убивает визуальное впечатление и выдаёт что картинки сгенерированы.
Решение
GeminiWatermarkTool — CLI-утилита которая удаляет видимые ватермарки Gemini используя blend modes (Screen и Colour Burn). Работает локально, не отправляет картинки на сервер.
Использование
~/tools/GeminiWatermarkTool -i [входной файл] -o [выходной файл]
Пример для нашего воркфлоу:
# После скачивания картинки из Gemini
~/tools/GeminiWatermarkTool -i ~/Downloads/Gemini_Generated_Image_xxx.png -o ./public/images/01-courtroom-forge.png
Встраивание в воркфлоу генерации картинок
При генерации серии из 20 картинок для презентации (см. praktikum-nano-banana-guide.md), после каждого шага добавляется одна команда:
1. Сгенерировать картинку в Gemini (Nano Banana 2)
2. Выбрать лучший вариант, скачать
3. >>> Прогнать через GeminiWatermarkTool <<<
4. Сохранить в public/images/ с правильным именем
5. Проверить по чеклисту
Батч-обработка
Если картинок много — обработать все разом:
macOS / Linux:
for f in ~/Downloads/Gemini_Generated_Image_*.png; do
name=$(basename "$f" .png)
~/tools/GeminiWatermarkTool -i "$f" -o "./clean/${name}.png"
done
Windows (PowerShell):
Get-ChildItem ~\Downloads\Gemini_Generated_Image_*.png | ForEach-Object {
~/tools/GeminiWatermarkTool -i $_.FullName -o "./clean/$($_.BaseName).png"
}
Альтернатива: Python-скрипт (adaptive_remover)
В этом проекте используется utils/clean-watermarks.sh — адаптивный Python-скрипт, который:
- Автоматически определяет силу водяного знака (1.0x или ~1.48x)
- Удаляет SynthID-звезду через reverse alpha blending
- Инпейнтит V-шеврон (видимый логотип Gemini под звездой)
- Обрабатывает все картинки батчем из images-orig/ → images/
Подробнее: hints-watermark-removal.md
Важно
- Удаляет только ВИДИМЫЙ ватермарк (наложенный поверх изображения)
- Невидимый цифровой SynthID остаётся в метаданных — это ок для презентаций
- Качество изображения не теряется
- Работает офлайн