Files
easy-png-tools2/docs/archive/plan-easy-batch.md
T
2026-08-23 15:22:00 +05:00

7.1 KiB

План: вторая волна EASY-инструментов

СТАТУС: ВЫПОЛНЕН 2026-08-23.

1. Принципы отбора

  • Максимум переиспользования: готовые контракты записей (run, preview, формат вывода, info-режим) и существующие операции ядра.
  • Новые механизмы ядра — минимальные, чистые, покрытые тестами до подключения инструментов.
  • Canvas/DOM-зависимые утилиты (SVG-вход, надписи и водяные знаки, эффекты через фильтры контекста) — вне этого пакета, отдельная волна.
  • Целевой объём волны: около 37 новых инструментов, каталог вырастает с 11 до ~48.

2. Новые механизмы

  • Генераторы без входного файла: у записи появляется признак «источник не нужен»; страница такого инструмента не показывает левую панель и зону перетаскивания — только параметры и результат.
  • Текстовый ввод и вывод: часть утилит принимает вставленный текст вместо файла и выдаёт текстовый результат (панель с полем только для чтения, кнопки «копировать» и «скачать как текст»). Распространяется на base64, data-uri, hex.
  • BMP-энкодер в ядре: 24-битный, чистая функция из пикселей в байты, с тестами на маленьких матрицах (заголовок, порядок каналов BGR, паддинг строки).

3. Состав пакета

Конвертация — 6 jpg-to-png, webp-to-png, gif-to-png (первый кадр), bmp-to-png, ico-to-png — всё через уже умеющий декодировать ввод, сохранение в PNG; плюс png-to-bmp на новом энкодере.

Текстовые представления — 6 png-to-base64, base64-to-png, png-to-data-uri, data-uri-to-png, png-to-hex, hex-to-png.

Цвет — 9 change-opacity (множитель прозрачности), sepia, change-hue (сдвиг тона), extract-channel (выбор R/G/B в оттенках серого), swap-channels (перестановка парой), threshold-black-white (порог яркости), posterize (число уровней), two-colors (два цвета + порог), invert-alpha.

Прозрачность и холст — 7 remove-alpha-channel (подложка белым), set-alpha-channel (константная прозрачность), extract-alpha-mask (альфа в чёрно-белую маску), add-padding (отступ + цвет/прозрачность), add-border (толщина + цвет), round-corners (радиус), fit-on-background (вписать на полотно цвета с полями).

Композиция — 2 tile (повтор по сетке), center-by-alpha (центрирование по непрозрачному содержимому).

Генераторы — 4 create-empty (размер + цвет или прозрачность), single-color, random-noise (с фиксированным зерном для воспроизводимости), linear-gradient (два цвета, направление).

Анализ — 3 is-grayscale, is-transparent, orientation (портрет/ландшафт/квадрат) — текстовые сводки в info-режиме.

4. Новые операции ядра (все — чистые функции с тестами)

  • Холст: расширение полотна (общая база для padding/border/fit), тайлинг, центр по bounding-box альфы, скругление углов маской радиуса.
  • Цвет: сепия, сдвиг тона через HSL, множитель альфы, извлечение/перестановка каналов, пороги (яркость и двухцветный), постеризация уровней, инверсия альфы.
  • Генерация: заливка цветом, шум с зерном, линейный градиент.
  • Форматы: BMP-энкодер; кодеки текстовых представлений (base64/data-uri/hex в обе стороны).
  • Анализ: проверка монохромности, полной непрозрачности, ориентации.

5. Этапы и проверки

  • A. Механизмы — генераторный режим страницы, текстовый ввод/вывод, BMP-энкодер. Проверка: test/check/build.
  • B. Конвертация и текстовые представления — 12 инструментов. Проверка: ручной прогон каждой конвертации туда-обратно.
  • C. Цвет — 9 инструментов. Проверка: юнит-тесты операций + визуально.
  • D. Прозрачность, холст, композиция — 9 инструментов. Проверка: юнит-тесты + визуально.
  • E. Генераторы и анализ — 7 инструментов. Проверка: детерминизм шума (одно зерно — одно изображение), своды анализа.
  • F. Итог — полный прогон, смоук всех новых инструментов «настроить → скачать», регресс старых одиннадцати.

6. Критерии готовности

  • Каталог содержит ~48 рабочих инструментов, каждый доступен страницей с формы из реестра.
  • Все новые операции ядра покрыты тестами; обратимые конвертации проверены круговым прогоном (например PNG → base64 → PNG даёт те же пиксели).
  • Генераторы работают без загрузки файла; текстовые представления копируются и скачиваются.
  • test/check/build зелёные.

7. Что сознательно не делаем

  • SVG-вход, рисование текста и водяных знаков, эффекты через фильтры контекста, GIF/APNG-энкодинг, пакетная обработка — последующие волны.
  • Семейства logo/icon/signature/stamp как отдельные страницы — они будут конфигурациями тех же операций после этой волны.