41 lines
2.2 KiB
Markdown
41 lines
2.2 KiB
Markdown
# Image Halftone Experiment
|
||
|
||
Генерирует SVG халфтоновый эффект из изображения с анимацией мерцания точек.
|
||
|
||
## Что делает
|
||
|
||
Скрипт преобразует любое изображение в компактный SVG с:
|
||
- **Халфтоновым растром** — изображение из точек разного размера (как на плакате)
|
||
- **CSS-анимацией** — каждая точка пульсирует с уникальной задержкой
|
||
- **Прозрачным фоном** — работает на любом фоне (темная/светлая тема)
|
||
- **Минимальным размером** — оптимизирован через переиспользование CSS-классов
|
||
|
||
## Быстрый старт
|
||
|
||
```bash
|
||
# Установить зависимости
|
||
poetry install
|
||
|
||
# Запустить
|
||
poetry run python main.py img_3.jpg
|
||
```
|
||
|
||
На выходе получишь `img_3j.svg` с анимацией.
|
||
|
||
## Параметры
|
||
|
||
В коде (строка 53) можно менять:
|
||
- `cols=90` — кол-во колонок (больше = детальнее, но тяжелее)
|
||
- `max_radius=5` — макс размер точки
|
||
|
||
Параметры анимации в функции `generate_halftone_svg()`:
|
||
- `animation_variants=12` — кол-во групп точек с разными задержками (чем меньше --> компактнее SVG)
|
||
|
||
В стилях CSS можно поиграться:
|
||
- `animation-duration: 1.5s` — скорость пульсации (чем меньше --> быстрее)
|
||
- `animation-delay: calc(var(--i) * 0.1s)` — задержка для каждой точки (чем меньше --> быстрее)
|
||
- `animation-iteration-count: infinite` — бесконечная анимация (можно убрать, если нужно один раз)
|
||
- `transform:scale(0.99)` — масштабирование групп точек (можно экстремально всю картинку "схлопнуть"
|
||
или наоборот ""распустить")
|
||
- `fill:#80000090` -- цвет точек (с прозрачностью)
|