mirror of
https://github.com/Ku6epXBOCTuK/easy-png-tools.git
synced 2026-09-14 13:36:36 +00:00
1352 lines
59 KiB
TypeScript
1352 lines
59 KiB
TypeScript
import type { Dict } from "./dict";
|
||
|
||
export const ru: Dict = {
|
||
header: {
|
||
workspace: "Рабочая область",
|
||
catalog: "Каталог",
|
||
sectionsAria: "Разделы",
|
||
footerNote:
|
||
"Все операции выполняются локально в вашем браузере — файлы никуда не отправляются.",
|
||
},
|
||
categories: {
|
||
convert: "Конвертация",
|
||
alpha: "Прозрачность",
|
||
color: "Цвет",
|
||
geometry: "Геометрия",
|
||
filters: "Фильтры",
|
||
text: "Текст",
|
||
analyze: "Анализ",
|
||
generate: "Генерация",
|
||
},
|
||
home: {
|
||
defaultTitle: "easy-png-tools — PNG-утилиты прямо в браузере",
|
||
heroTitle: "Что делаем с изображением?",
|
||
heroLead:
|
||
"Найдите инструмент — все операции выполняются локально в браузере.",
|
||
restoreLast: "↩ Вернуть последний: {title}",
|
||
changeTool: "← Сменить инструмент",
|
||
},
|
||
catalog: {
|
||
pageTitle: "Все инструменты — easy-png-tools",
|
||
metaDescription:
|
||
"Полный каталог PNG-утилит: конвертация, прозрачность, цвет, геометрия, анализ и генерация изображений.",
|
||
heading: "Каталог инструментов",
|
||
lead: "{count} утилит для работы с PNG. Все операции выполняются локально в браузере.",
|
||
},
|
||
toolPage: {
|
||
fallbackTitle: "Инструмент",
|
||
legendSource: "Исходник",
|
||
legendSummary: "Сводка",
|
||
legendResult: "Результат",
|
||
legendParams: "Параметры",
|
||
stepHeading: "Шаг {n}",
|
||
removeStepAria: "Убрать шаг",
|
||
stepError: "Шаг {n} ({title}): {msg}",
|
||
},
|
||
chain: {
|
||
stepLabel: "Шаг {n}: {title}",
|
||
inputLegend: "Вход",
|
||
resultLegend: "Результат",
|
||
paramsLegend: "Параметры",
|
||
busyTitle: "Обработка…",
|
||
busyHint: "Выполняется шаг цепочки",
|
||
removeStepAria: "Убрать шаг",
|
||
},
|
||
sourceCard: {
|
||
replaceImage: "Заменить изображение",
|
||
},
|
||
resultCard: {
|
||
emptyTitle: "Результат появится здесь",
|
||
emptyHint: "Сначала загрузите исходное изображение слева",
|
||
processingTitle: "Обработка…",
|
||
processingHint: "Изображение обрабатывается, это займёт немного времени",
|
||
recalc: "Пересчёт…",
|
||
nextTool: "⛓ Следующий инструмент",
|
||
breakChain: "✂ Оборвать цепочку",
|
||
},
|
||
paramsCard: {
|
||
noParams: "У этого инструмента нет параметров — результат уже готов.",
|
||
},
|
||
textInput: {
|
||
heading: "Текст",
|
||
placeholder: "Вставьте данные сюда",
|
||
aria: "Текстовые данные",
|
||
decode: "Декодировать",
|
||
},
|
||
textResult: {
|
||
outputAria: "Текстовый результат",
|
||
copied: "Скопировано",
|
||
copy: "Копировать",
|
||
downloadTxt: "Скачать .txt",
|
||
},
|
||
download: {
|
||
busy: "Готовим файл…",
|
||
file: "Скачать .{ext}",
|
||
},
|
||
infoPanel: {
|
||
dimensions: "Размеры",
|
||
alpha: "Альфа-канал",
|
||
alphaYes: "есть — есть полупрозрачные пиксели",
|
||
alphaNo: "нет",
|
||
colorCount: "Уникальных цветов (RGBA)",
|
||
},
|
||
dropZone: {
|
||
pickDefault: "Перетащите изображение сюда или нажмите, чтобы выбрать файл",
|
||
overlayDefault: "Отпустите файл, чтобы заменить изображение",
|
||
},
|
||
search: {
|
||
placeholder: "Найдите инструмент…",
|
||
aria: "Поиск инструмента",
|
||
nothingFound: "Ничего не найдено — попробуйте другое слово.",
|
||
},
|
||
ui: {
|
||
showMask: "Показать маску",
|
||
decrease: "Уменьшить",
|
||
increase: "Увеличить",
|
||
reset: "Сбросить",
|
||
pipette: "Пипетка",
|
||
themeLight: "Светлая тема",
|
||
themeDark: "Тёмная тема",
|
||
overlayTitle: "Знак",
|
||
overlayDrop: "Перетащите PNG-знак или нажмите",
|
||
overlayRemove: "Убрать знак",
|
||
},
|
||
errors: {
|
||
noImageRun: "Этот инструмент не обрабатывает изображения",
|
||
sourceRequired: "Сначала загрузите изображение",
|
||
textRequired: "Сначала введите текст",
|
||
workerFailed: "Ошибка исполнения в воркере",
|
||
workerUnavailable: "Воркер недоступен",
|
||
notFound: "Инструмент не найден",
|
||
noWatermark: "Сначала выберите картинку-знак",
|
||
badTransform: "Вырожденная матрица трансформации",
|
||
skewAngle: "Углы наклона не могут быть 90° или -90°",
|
||
badHex: 'Некорректный HEX-цвет: "{value}"',
|
||
radiusInt: "Радиус должен быть целым неотрицательным числом",
|
||
kernelSize: "Ядро не совпадает с изображением по размеру",
|
||
sizeInt: "Ширина и высота должны быть целыми числами ≥ 1",
|
||
cropBounds: "Область обрезки не пересекает изображение",
|
||
noCanvasCtx: "Canvas 2D context недоступен в этом окружении",
|
||
badBase64: "Ожидается base64-строка или data-uri изображения",
|
||
qualityRange: "quality должно быть в диапазоне 0..1",
|
||
svgSize: "Не удалось определить размер SVG",
|
||
svgLoad: "Не удалось загрузить SVG — проверьте разметку",
|
||
encodeUnsupported: "Браузер не поддерживает кодирование в {mime}",
|
||
unsupportedFile:
|
||
"Неподдерживаемый формат файла ({type}). Поддерживаются PNG, JPEG, WebP, GIF и BMP.",
|
||
widthInt: "Ширина изображения должна быть целым числом ≥ 1",
|
||
noHexPixels: "Не найдено hex-значений пикселей",
|
||
badPixelToken:
|
||
"Каждый пиксель — 8 hex-символов RRGGBBAA, значения через пробел",
|
||
pixelCountMismatch:
|
||
"Число пикселей ({count}) не делится на ширину {width} без остатка",
|
||
toolNotFound: 'Инструмент "{id}" не найден',
|
||
badJson: "Файл не является корректным JSON",
|
||
badPipelineShape: "Структура файла не похожа на цепочку шагов",
|
||
pipelineVersion: "Неподдерживаемая версия цепочки: {version}",
|
||
noSteps: "В файле нет списка шагов",
|
||
paramNumber: 'Параметр "{id}" должен быть числом',
|
||
paramString: 'Параметр "{id}" должен быть строкой',
|
||
paramBool: 'Параметр "{id}" должен быть значением флажка',
|
||
resizeSize: "Ширина и/или высота должны быть положительными",
|
||
cropSize: "Ширина и высота области обрезки должны быть положительными",
|
||
sizePositive: "Размеры должны быть положительными и конечными",
|
||
tooManyParts: "Слишком много частей ({count}). Ограничение — 1000.",
|
||
},
|
||
tools: {
|
||
"jpg-to-png": {
|
||
title: "Конвертировать JPG в PNG",
|
||
description:
|
||
"Открывает JPEG и сохраняет его как PNG без потерь. Прозрачность, если была, сохраняется.",
|
||
},
|
||
"webp-to-png": {
|
||
title: "Конвертировать WebP в PNG",
|
||
description: "Перекодирует WebP-изображение в универсальный PNG.",
|
||
},
|
||
"gif-to-png": {
|
||
title: "Конвертировать GIF в PNG",
|
||
description: "Достаёт первый кадр GIF-анимации и сохраняет его как PNG.",
|
||
},
|
||
"bmp-to-png": {
|
||
title: "Конвертировать BMP в PNG",
|
||
description: "Перекодирует BMP в компактный PNG без потерь.",
|
||
},
|
||
"ico-to-png": {
|
||
title: "Конвертировать ICO в PNG",
|
||
description: "Превращает иконку .ico в обычный PNG нужного размера.",
|
||
},
|
||
"png-to-bmp": {
|
||
title: "Конвертировать PNG в BMP",
|
||
description:
|
||
"Сохраняет изображение в 24-битный BMP без альфа-канала: прозрачность заменяется чёрным фоном.",
|
||
},
|
||
"png-to-base64": {
|
||
title: "PNG в Base64",
|
||
description:
|
||
"Кодирует изображение в base64-строку для вставки в код или стили.",
|
||
},
|
||
"base64-to-png": {
|
||
title: "Base64 в PNG",
|
||
description:
|
||
"Декодирует base64-строку или data-uri обратно в картинку. Вставьте строку слева.",
|
||
},
|
||
"png-to-data-uri": {
|
||
title: "PNG в Data URI",
|
||
description:
|
||
"Строит полный data-uri (data:image/png;base64,…) для встраивания в HTML/CSS.",
|
||
},
|
||
"data-uri-to-png": {
|
||
title: "Data URI в PNG",
|
||
description: "Декодирует data:image/…;base64,… обратно в файл картинки.",
|
||
},
|
||
"png-to-hex": {
|
||
title: "PNG в HEX-пиксели",
|
||
description:
|
||
"Показывает все пиксели как hex-значения rrggbbaa — по строкам, через пробел.",
|
||
},
|
||
"hex-to-png": {
|
||
title: "HEX-пиксели в PNG",
|
||
description:
|
||
"Собирает картинку из hex-значений rrggbbaa (через пробел). Укажите ширину — высота рассчитается сама.",
|
||
params: { width: "Ширина изображения" },
|
||
},
|
||
"resize-png": {
|
||
title: "Изменить размер PNG",
|
||
description:
|
||
"Масштабирование изображения с билинейной интерполяцией. При сохранении пропорций одна сторона задаёт масштаб, а если указаны обе — изображение вписывается в эти размеры.",
|
||
params: {
|
||
width: "Ширина (0 — авто)",
|
||
height: "Высота (0 — авто)",
|
||
keepAspect: "Сохранять пропорции",
|
||
},
|
||
},
|
||
"crop-png": {
|
||
title: "Обрезать PNG",
|
||
description:
|
||
"Вырезает прямоугольную область. Координаты и размеры выходят за границы изображения — область усекается до пересечения с картинкой.",
|
||
params: {
|
||
x: "X (слева)",
|
||
y: "Y (сверху)",
|
||
width: "Ширина области",
|
||
height: "Высота области",
|
||
},
|
||
},
|
||
"rotate-png": {
|
||
title: "Повернуть PNG",
|
||
description:
|
||
"Поворот на 90°, 180° или 270° по часовой стрелке без потери качества.",
|
||
params: { angle: "Угол поворота" },
|
||
options: {
|
||
angle: {
|
||
"90": "90° по часовой",
|
||
"180": "180°",
|
||
"270": "270° по часовой",
|
||
},
|
||
},
|
||
},
|
||
"flip-png": {
|
||
title: "Отразить PNG",
|
||
description:
|
||
"Зеркальное отражение по горизонтали или вертикали без потери качества.",
|
||
params: { axis: "Ось отражения" },
|
||
options: {
|
||
axis: {
|
||
horizontal: "По горизонтали (слева направо)",
|
||
vertical: "По вертикали (сверху вниз)",
|
||
},
|
||
},
|
||
},
|
||
"add-padding-png": {
|
||
title: "Добавить поля PNG",
|
||
description:
|
||
"Расширяет холст во все стороны на выбранное число пикселей.",
|
||
params: {
|
||
padding: "Поля, px",
|
||
transparent: "Прозрачные поля",
|
||
color: "Цвет полей",
|
||
},
|
||
},
|
||
"add-border-png": {
|
||
title: "Добавить рамку PNG",
|
||
description: "Рисует цветную рамку вокруг изображения выбранной толщины.",
|
||
params: { thickness: "Толщина рамки, px", color: "Цвет рамки" },
|
||
},
|
||
"fit-on-background-png": {
|
||
title: "Вписать PNG на фон",
|
||
description:
|
||
"Помещает изображение по центру полотна заданного размера с прозрачным или цветным фоном.",
|
||
params: {
|
||
width: "Ширина полотна",
|
||
height: "Высота полотна",
|
||
transparent: "Прозрачный фон",
|
||
color: "Цвет фона",
|
||
},
|
||
},
|
||
"tile-png": {
|
||
title: "Замостить PNG",
|
||
description:
|
||
"Повторяет изображение сеткой из выбранного числа столбцов и строк.",
|
||
params: { columns: "Столбцов", rows: "Строк" },
|
||
},
|
||
"center-by-alpha-png": {
|
||
title: "Центрировать PNG по содержимому",
|
||
description:
|
||
"Находит непрозрачную часть изображения и размещает её по центру прежнего холста.",
|
||
},
|
||
"blur-png": {
|
||
title: "Размытие PNG",
|
||
description:
|
||
"Гауссово размытие: три прохода разделяемого бокса — быстро при любом радиусе. Прозрачные края не темнеют.",
|
||
params: { radius: "Радиус, px" },
|
||
},
|
||
"sharpen-png": {
|
||
title: "Резкость PNG",
|
||
description:
|
||
"Подчёркивает края ядром резкости; сила задаёт смесь с оригиналом. 0% — без изменений.",
|
||
params: { strength: "Сила, %" },
|
||
},
|
||
"grayscale-png": {
|
||
title: "Чёрно-белый PNG",
|
||
description:
|
||
"Переводит изображение в оттенки серого по яркостной формуле BT.601. Альфа сохраняется.",
|
||
},
|
||
"invert-colors-png": {
|
||
title: "Инвертировать цвета PNG",
|
||
description:
|
||
"Обращает каждый цветовой канал (255 − значение). Альфа не меняется.",
|
||
},
|
||
"adjust-brightness-contrast-png": {
|
||
title: "Яркость и контраст PNG",
|
||
description:
|
||
"Изменяет яркость и контраст в диапазоне от −100 до +100. Значение 0 — без изменений.",
|
||
params: { brightness: "Яркость", contrast: "Контраст" },
|
||
},
|
||
"change-png-opacity": {
|
||
title: "Изменить прозрачность PNG",
|
||
description:
|
||
"Умножает альфа-канал на процент: 0% — полностью прозрачный, 100% — без изменений.",
|
||
params: { percent: "Прозрачность, %" },
|
||
},
|
||
"sepia-png": {
|
||
title: "Эффект сепии",
|
||
description:
|
||
"Тонирует изображение в тёплые коричневые тона классической сепии.",
|
||
},
|
||
"change-png-hue": {
|
||
title: "Сменить оттенок PNG",
|
||
description:
|
||
"Сдвиг цветового тона по кругу. Насыщенность и яркость сохраняются.",
|
||
params: { degrees: "Сдвиг тона, °" },
|
||
},
|
||
"extract-channel-png": {
|
||
title: "Извлечь канал PNG",
|
||
description:
|
||
"Оставляет выбранный канал — красный, зелёный или синий — в оттенках серого.",
|
||
params: { channel: "Канал" },
|
||
options: { channel: { red: "Красный", green: "Зелёный", blue: "Синий" } },
|
||
},
|
||
"swap-channels-png": {
|
||
title: "Переставить каналы PNG",
|
||
description:
|
||
"Меняет местами два цветовых канала — быстрый способ получить необычный окрас.",
|
||
params: { pair: "Пара каналов" },
|
||
options: {
|
||
pair: {
|
||
"r-g": "Красный ↔ Зелёный",
|
||
"r-b": "Красный ↔ Синий",
|
||
"g-b": "Зелёный ↔ Синий",
|
||
},
|
||
},
|
||
},
|
||
"black-and-white-png": {
|
||
title: "Чёрно-белый PNG по порогу",
|
||
description:
|
||
"Жёсткая бинаризация по яркости: каждый пиксель становится чёрным или белым.",
|
||
params: { threshold: "Порог яркости, %" },
|
||
},
|
||
"posterize-png": {
|
||
title: "Постеризация PNG",
|
||
description: "Уменьшает число уровней каждого канала — плакатный эффект.",
|
||
params: { levels: "Уровней на канал" },
|
||
},
|
||
"two-colors-png": {
|
||
title: "Два цвета PNG",
|
||
description:
|
||
"Перекрашивает изображение в два выбранных цвета по порогу яркости.",
|
||
params: {
|
||
lightColor: "Цвет светлых участков",
|
||
darkColor: "Цвет тёмных участков",
|
||
threshold: "Порог яркости, %",
|
||
},
|
||
},
|
||
"convert-png-to-jpg": {
|
||
title: "Конвертировать PNG в JPG",
|
||
description:
|
||
"Прозрачность накладывается на выбранный цвет подложки (по умолчанию белый), результат сохраняется в JPEG.",
|
||
params: { background: "Цвет подложки", quality: "Качество JPEG" },
|
||
},
|
||
"convert-png-to-webp": {
|
||
title: "Конвертировать PNG в WebP",
|
||
description:
|
||
"Перекодирует изображение в WebP с настраиваемым качеством. Прозрачность сохраняется.",
|
||
params: { quality: "Качество WebP" },
|
||
},
|
||
"remove-alpha-channel-png": {
|
||
title: "Убрать альфа-канал PNG",
|
||
description:
|
||
"Накладывает изображение на белый фон и сохраняет без прозрачности.",
|
||
},
|
||
"set-alpha-channel-png": {
|
||
title: "Задать альфа-канал PNG",
|
||
description:
|
||
"Присваивает всем пикселям одинаковую прозрачность, цвета не меняются.",
|
||
params: { percent: "Прозрачность, %" },
|
||
},
|
||
"extract-alpha-mask-png": {
|
||
title: "Извлечь маску альфы PNG",
|
||
description: "Превращает прозрачность в чёрно-белую непрозрачную маску.",
|
||
},
|
||
"round-corners-png": {
|
||
title: "Скруглить углы PNG",
|
||
description:
|
||
"Обрезает углы по радиусу, заданному в процентах от половины меньшей стороны.",
|
||
params: { radius: "Радиус скругления, %" },
|
||
},
|
||
"invert-alpha-png": {
|
||
title: "Инвертировать альфа-канал PNG",
|
||
description: "Непрозрачные области становятся прозрачными и наоборот.",
|
||
},
|
||
"remove-background-png": {
|
||
title: "Удалить фон PNG (умно)",
|
||
description:
|
||
"Убирает однотонный фон: по цвету с допуском, только внешние области от краёв или весь совпадающий цвет. Умеет сглаживать границу.",
|
||
params: {
|
||
color: "Цвет фона",
|
||
tolerance: "Допуск похожести, %",
|
||
outerOnly: "Только внешние области",
|
||
smooth: "Сглаживание границы, проходы",
|
||
},
|
||
},
|
||
"add-stroke-png": {
|
||
title: "Обвести PNG",
|
||
description:
|
||
"Добавляет цветную обводку-кольцо вокруг непрозрачного содержимого заданной толщины.",
|
||
params: { color: "Цвет обводки", thickness: "Толщина, px" },
|
||
},
|
||
"find-contour-png": {
|
||
title: "Найти контур PNG",
|
||
description:
|
||
"Оставляет только линию по границе непрозрачных областей выбранного цвета и толщины.",
|
||
params: { color: "Цвет линии", thickness: "Толщина линии, px" },
|
||
},
|
||
"make-thicker-png": {
|
||
title: "Утолщить PNG",
|
||
description: "Расширяет непрозрачные области на заданное число пикселей.",
|
||
params: { radius: "На сколько px" },
|
||
},
|
||
"make-thinner-png": {
|
||
title: "Утончить PNG",
|
||
description:
|
||
"Сужает непрозрачные области — утоньшает штрихи надписей и деталей.",
|
||
params: { radius: "На сколько px" },
|
||
},
|
||
"harden-alpha-png": {
|
||
title: "Жёсткие края PNG",
|
||
description:
|
||
"Бинаризует альфа-канал по порогу: полупрозрачные пиксели становятся либо полностью прозрачными, либо непрозрачными.",
|
||
params: { threshold: "Порог альфы, %" },
|
||
},
|
||
"despeckle-alpha-png": {
|
||
title: "Убрать мусор PNG",
|
||
description:
|
||
"Открытие: убирает одиночные полупрозрачные пиксели и мелкие крапинки.",
|
||
params: { radius: "Радиус очистки, px" },
|
||
},
|
||
"close-holes-png": {
|
||
title: "Закрыть дыры PNG",
|
||
description:
|
||
"Закрытие: заполняет одиночные прозрачные точки внутри объекта.",
|
||
params: { radius: "Радиус закрытия, px" },
|
||
},
|
||
"remove-color-from-png": {
|
||
title: "Удалить цвет из PNG (прозрачность)",
|
||
description:
|
||
"Делает прозрачными все пиксели, близкие к выбранному цвету. Порог задаёт допустимое отклонение в процентах от максимального цветового расстояния.",
|
||
params: {
|
||
targetColor: "Цвет для удаления",
|
||
tolerance: "Порог похожести, %",
|
||
},
|
||
},
|
||
"png-info": {
|
||
title: "Информация о PNG",
|
||
description:
|
||
"Показывает размеры, наличие альфа-канала и количество уникальных цветов загруженного изображения.",
|
||
},
|
||
"create-empty-png": {
|
||
title: "Создать пустой PNG",
|
||
description:
|
||
"Генерирует холст выбранного размера — прозрачный или залитый цветом.",
|
||
params: {
|
||
width: "Ширина",
|
||
height: "Высота",
|
||
transparent: "Прозрачный",
|
||
color: "Цвет",
|
||
},
|
||
},
|
||
"single-color-png": {
|
||
title: "Создать одноцветный PNG",
|
||
description: "Генерирует прямоугольник заданного размера и цвета.",
|
||
params: { width: "Ширина", height: "Высота", color: "Цвет" },
|
||
},
|
||
"random-noise-png": {
|
||
title: "Создать случайный шум PNG",
|
||
description:
|
||
"Генерирует картинку со случайными пикселями. Зерно фиксирует результат: одно зерно — одна картинка.",
|
||
params: { width: "Ширина", height: "Высота", seed: "Зерно" },
|
||
},
|
||
"linear-gradient-png": {
|
||
title: "Создать градиент PNG",
|
||
description:
|
||
"Генерирует плавный переход между двумя цветами по горизонтали или вертикали.",
|
||
params: {
|
||
width: "Ширина",
|
||
height: "Высота",
|
||
fromColor: "Цвет начала",
|
||
toColor: "Цвет конца",
|
||
direction: "Направление",
|
||
},
|
||
options: {
|
||
direction: { horizontal: "По горизонтали", vertical: "По вертикали" },
|
||
},
|
||
},
|
||
"color-wheel-png": {
|
||
title: "Цветовой круг PNG",
|
||
description:
|
||
"Круг HSL: оттенок по окружности, насыщенность от центра к краю, выбранная светлота.",
|
||
params: { width: "Размер", lightness: "Светлота, %" },
|
||
},
|
||
"complementary-png": {
|
||
title: "Комплементарная палитра PNG",
|
||
description:
|
||
"Два противоположных цвета круга — базовый и его дополнение.",
|
||
params: {
|
||
baseColor: "Базовый цвет",
|
||
width: "Ширина",
|
||
layout: "Раскладка",
|
||
},
|
||
options: { layout: { grid: "Сетка", strip: "Полоса" } },
|
||
},
|
||
"triadic-png": {
|
||
title: "Триадная палитра PNG",
|
||
description: "Три цвета через 120° друг от друга на цветовом круге.",
|
||
params: {
|
||
baseColor: "Базовый цвет",
|
||
width: "Ширина",
|
||
layout: "Раскладка",
|
||
},
|
||
options: { layout: { grid: "Сетка", strip: "Полоса" } },
|
||
},
|
||
"tetradic-png": {
|
||
title: "Тетрадная палитра PNG",
|
||
description: "Четыре цвета — две комплементарные пары, шаг 90° по кругу.",
|
||
params: {
|
||
baseColor: "Базовый цвет",
|
||
width: "Ширина",
|
||
layout: "Раскладка",
|
||
},
|
||
options: { layout: { grid: "Сетка", strip: "Полоса" } },
|
||
},
|
||
"analogous-png": {
|
||
title: "Аналоговая палитра PNG",
|
||
description:
|
||
"Соседние оттенки вокруг базового — спокойная родственная гамма.",
|
||
params: {
|
||
baseColor: "Базовый цвет",
|
||
width: "Ширина",
|
||
layout: "Раскладка",
|
||
spread: "Разброс оттенка, °",
|
||
count: "Сколько цветов",
|
||
},
|
||
options: { layout: { grid: "Сетка", strip: "Полоса" } },
|
||
},
|
||
"monochromatic-png": {
|
||
title: "Монохромная палитра PNG",
|
||
description:
|
||
"Тоны одного оттенка: меняется светлота в выбранном диапазоне, тон и насыщенность фиксированы.",
|
||
params: {
|
||
baseColor: "Базовый цвет",
|
||
width: "Ширина",
|
||
layout: "Раскладка",
|
||
count: "Сколько цветов",
|
||
range: "Диапазон светлоты, %",
|
||
},
|
||
options: { layout: { grid: "Сетка", strip: "Полоса" } },
|
||
},
|
||
"shades-png": {
|
||
title: "Градация оттенка PNG",
|
||
description: "Ступени базового цвета от исходного к более тёмному.",
|
||
params: {
|
||
baseColor: "Базовый цвет",
|
||
width: "Ширина",
|
||
layout: "Раскладка",
|
||
count: "Сколько цветов",
|
||
depth: "Глубина затемнения, %",
|
||
},
|
||
options: { layout: { grid: "Сетка", strip: "Полоса" } },
|
||
},
|
||
"mix-colors-png": {
|
||
title: "Смешать цвета PNG",
|
||
description:
|
||
"Усредняет несколько hex-цветов в один свотч. Введите значения через запятую; неверные токены пропускаются.",
|
||
params: { colors: "Цвета (hex через запятую)", width: "Ширина" },
|
||
},
|
||
"blend-two-png": {
|
||
title: "Перелив двух цветов PNG",
|
||
description: "Непрерывный горизонтальный градиент между двумя цветами.",
|
||
params: { colorA: "Цвет A", colorB: "Цвет B", width: "Ширина" },
|
||
},
|
||
"step-colors-png": {
|
||
title: "Ступени между цветами PNG",
|
||
description:
|
||
"Дискретный набор равномерно распределённых ступеней между двумя цветами.",
|
||
params: {
|
||
colorA: "Цвет A",
|
||
colorB: "Цвет B",
|
||
steps: "Сколько ступеней",
|
||
width: "Ширина",
|
||
layout: "Раскладка",
|
||
},
|
||
options: { layout: { grid: "Сетка", strip: "Полоса" } },
|
||
},
|
||
"sort-colors-png": {
|
||
title: "Отсортировать цвета PNG",
|
||
description:
|
||
"Рисует ваш hex-список свотчами, отсортированными по тону, яркости или насыщенности. Неверные токены пропускаются.",
|
||
params: {
|
||
colors: "Цвета (hex через запятую)",
|
||
order: "Сортировка",
|
||
width: "Ширина",
|
||
layout: "Раскладка",
|
||
},
|
||
options: {
|
||
order: { hue: "Оттенок", luma: "Яркость", sat: "Насыщенность" },
|
||
layout: { grid: "Сетка", strip: "Полоса" },
|
||
},
|
||
},
|
||
"png-is-grayscale": {
|
||
title: "Проверить: PNG монохромный?",
|
||
description:
|
||
"Сообщает, состоит ли изображение только из оттенков серого.",
|
||
results: {
|
||
grayscaleYes: "Да — все пиксели являются оттенками серого.",
|
||
grayscaleNo: "Нет — найдены цветные пиксели.",
|
||
},
|
||
},
|
||
"png-to-hsl": {
|
||
title: "Разложить PNG в HSL",
|
||
description:
|
||
"Раскладывает изображение на компоненты Тон, Насыщенность и Светлота.",
|
||
params: { component: "Компонент", display: "Режим показа" },
|
||
options: {
|
||
component: { h: "Тон (H)", s: "Насыщенность (S)", l: "Светлота (L)" },
|
||
display: { gray: "Градациями серого", color: "Пространство как RGB" },
|
||
},
|
||
},
|
||
"png-to-hsv": {
|
||
title: "Разложить PNG в HSV",
|
||
description:
|
||
"Раскладывает изображение на Тон, Насыщенность и Яркость (Value).",
|
||
params: { component: "Компонент", display: "Режим показа" },
|
||
options: {
|
||
component: { h: "Тон (H)", s: "Насыщенность (S)", v: "Яркость (V)" },
|
||
display: { gray: "Градациями серого", color: "Пространство как RGB" },
|
||
},
|
||
},
|
||
"png-to-hsi": {
|
||
title: "Разложить PNG в HSI",
|
||
description:
|
||
"Раскладывает изображение на Тон, Насыщенность и Интенсивность.",
|
||
params: { component: "Компонент", display: "Режим показа" },
|
||
options: {
|
||
component: {
|
||
h: "Тон (H)",
|
||
s: "Насыщенность (S)",
|
||
i: "Интенсивность (I)",
|
||
},
|
||
display: { gray: "Градациями серого", color: "Пространство как RGB" },
|
||
},
|
||
},
|
||
"png-to-cmyk": {
|
||
title: "PNG в CMYK-цвета",
|
||
description:
|
||
"Раскладывает изображение на печатные компоненты: Голубой, Пурпурный, Жёлтый и Чёрный (Key).",
|
||
params: { component: "Компонент", display: "Режим показа" },
|
||
options: {
|
||
component: {
|
||
c: "Голубой (C)",
|
||
m: "Пурпурный (M)",
|
||
y: "Жёлтый (Y)",
|
||
k: "Чёрный (K)",
|
||
},
|
||
display: { gray: "Градациями серого", color: "Пространство как RGB" },
|
||
},
|
||
},
|
||
"png-to-ycbcr": {
|
||
title: "PNG в YCbCr-цвета",
|
||
description:
|
||
"Раскладывает изображение на Яркость (Y) и цветоразностные компоненты Cb / Cr.",
|
||
params: { component: "Компонент", display: "Режим показа" },
|
||
options: {
|
||
component: {
|
||
y: "Яркость (Y)",
|
||
cb: "Синий-разностный (Cb)",
|
||
cr: "Красный-разностный (Cr)",
|
||
},
|
||
display: { gray: "Градациями серого", color: "Пространство как RGB" },
|
||
},
|
||
},
|
||
"png-to-lab": {
|
||
title: "PNG в LAB-цвета",
|
||
description:
|
||
"Раскладывает изображение на perceptual-компоненты: Светлость, зелёный–пурпурный и синий–жёлтый.",
|
||
params: { component: "Компонент", display: "Режим показа" },
|
||
options: {
|
||
component: {
|
||
l: "Светлость (L)",
|
||
a: "Зелёный–пурпурный (a)",
|
||
b: "Синий–жёлтый (b)",
|
||
},
|
||
display: { gray: "Градациями серого", color: "Пространство как RGB" },
|
||
},
|
||
},
|
||
"circle-mask-png": {
|
||
title: "Круглая маска PNG",
|
||
description:
|
||
"Вырезает из изображения круг. Диаметр задаётся в процентах от меньшей стороны.",
|
||
params: {
|
||
size: "Диаметр, % меньшей стороны",
|
||
offsetX: "Смещение X, %",
|
||
offsetY: "Смещение Y, %",
|
||
},
|
||
},
|
||
"square-mask-png": {
|
||
title: "Прямоугольная маска PNG",
|
||
description:
|
||
"Вырезает прямоугольник со сторонами в процентах от меньшей стороны изображения.",
|
||
params: {
|
||
widthPct: "Ширина, % меньшей стороны",
|
||
heightPct: "Высота, % меньшей стороны",
|
||
offsetX: "Смещение X, %",
|
||
offsetY: "Смещение Y, %",
|
||
},
|
||
},
|
||
"star-mask-png": {
|
||
title: "Маска-звезда PNG",
|
||
description:
|
||
"Вырезает звезду с настраиваемым числом лучей, глубиной впадин и поворотом.",
|
||
params: {
|
||
points: "Лучи",
|
||
innerRadius: "Радиус впадин, %",
|
||
size: "Внешний радиус, % меньшей стороны",
|
||
rotation: "Поворот, °",
|
||
offsetX: "Смещение X, %",
|
||
offsetY: "Смещение Y, %",
|
||
},
|
||
},
|
||
"wavy-mask-png": {
|
||
title: "Волнистая маска PNG",
|
||
description:
|
||
"Вырезает круг с волнистым краем: радиус модулируется синусом с заданной амплитудой и частотой.",
|
||
params: {
|
||
size: "Базовый радиус, % меньшей стороны",
|
||
amplitude: "Амплитуда волн, %",
|
||
waves: "Количество волн",
|
||
phase: "Фаза, °",
|
||
offsetX: "Смещение X, %",
|
||
offsetY: "Смещение Y, %",
|
||
},
|
||
},
|
||
"trim-empty-space-png": {
|
||
title: "Обрезать пустые поля PNG",
|
||
description:
|
||
"Обрезает прозрачные рамки вокруг содержимого. Пиксели с альфой выше порога считаются содержимым.",
|
||
params: { threshold: "Порог альфы" },
|
||
},
|
||
"change-canvas-size-png": {
|
||
title: "Изменить размер холста PNG",
|
||
description:
|
||
"Задаёт точный размер холста: лишнее обрезается, недостающее дополняется прозрачностью. Якорь выбирает, какая часть изображения остаётся.",
|
||
params: { width: "Ширина", height: "Высота", anchor: "Якорь" },
|
||
options: {
|
||
anchor: {
|
||
"top-left": "Сверху слева",
|
||
"top-center": "Сверху по центру",
|
||
"top-right": "Сверху справа",
|
||
"middle-left": "По центру слева",
|
||
center: "По центру",
|
||
"middle-right": "По центру справа",
|
||
"bottom-left": "Снизу слева",
|
||
"bottom-center": "Снизу по центру",
|
||
"bottom-right": "Снизу справа",
|
||
},
|
||
},
|
||
},
|
||
"change-aspect-ratio-png": {
|
||
title: "Изменить соотношение сторон PNG",
|
||
description:
|
||
"Вписывает изображение в целевое соотношение сторон: обрезать центр до заполнения или дополнить прозрачностью.",
|
||
params: { ratio: "Целевое отношение", mode: "Режим" },
|
||
options: {
|
||
ratio: {
|
||
"1:1": "1:1",
|
||
"4:3": "4:3",
|
||
"3:4": "3:4",
|
||
"3:2": "3:2",
|
||
"2:3": "2:3",
|
||
"16:9": "16:9",
|
||
"9:16": "9:16",
|
||
},
|
||
mode: {
|
||
crop: "Обрезать до заполнения",
|
||
pad: "Дополнить до вписывания",
|
||
},
|
||
},
|
||
},
|
||
"swap-orientation-png": {
|
||
title: "Поменять ориентацию PNG",
|
||
description:
|
||
"Поворачивает изображение на 90°, если ориентация отличается от целевой — ландшафт становится портретом и наоборот. Квадрат не трогается.",
|
||
params: { target: "Целевая ориентация" },
|
||
options: { target: { portrait: "Портрет", landscape: "Ландшафт" } },
|
||
},
|
||
"symmetric-copy-png": {
|
||
title: "Симметричная копия PNG",
|
||
description:
|
||
"Удваивает холст, зеркалируя сохранённую половину на пустую — мгновенный симметричный узор.",
|
||
params: { axis: "Линия зеркала", keepSide: "Какая сторона остаётся" },
|
||
options: {
|
||
axis: {
|
||
vertical: "Вертикальная (ширина ×2)",
|
||
horizontal: "Горизонтальная (высота ×2)",
|
||
},
|
||
keepSide: {
|
||
left: "Левая",
|
||
right: "Правая",
|
||
top: "Верхняя",
|
||
bottom: "Нижняя",
|
||
},
|
||
},
|
||
},
|
||
"feather-edges-png": {
|
||
title: "Растушевать края PNG",
|
||
description:
|
||
"Размывает только альфа-канал: жёсткие края выреза становятся мягкими, цвета не трогаются.",
|
||
params: { radius: "Радиус растушёвки, px" },
|
||
},
|
||
"clean-edges-png": {
|
||
title: "Почистить края PNG (defringe)",
|
||
description:
|
||
"Заменяет цветную кайму полупрозрачных пикселей цветом ближайшего полностью непрозрачного соседа. Альфа остаётся как была.",
|
||
params: { radius: "Радиус поиска, px" },
|
||
},
|
||
"pixelate-png": {
|
||
title: "Пикселизация PNG",
|
||
description:
|
||
"Усредняет каждый блок blockSize×blockSize в один цвет — классическая мозаика.",
|
||
params: { blockSize: "Размер блока, px" },
|
||
},
|
||
"randomize-pixels-png": {
|
||
title: "Перемешать пиксели PNG",
|
||
description:
|
||
"Переставляет блоки изображения между собой. Одинаковый seed даёт одинаковую раскладку.",
|
||
params: { blockSize: "Размер блока, px", seed: "Seed" },
|
||
},
|
||
"add-noise-png": {
|
||
title: "Добавить шум PNG",
|
||
description:
|
||
"Добавляет зерно в стиле плёнки. Детерминировано по seed; монохромный сохраняет баланс оттенков.",
|
||
params: { amount: "Сила, %", mode: "Тип шума", seed: "Seed" },
|
||
options: { mode: { mono: "Монохромное зерно", color: "Цветной шум" } },
|
||
},
|
||
"silhouette-png": {
|
||
title: "Силуэт PNG",
|
||
description:
|
||
"Заливает все видимые пиксели одним цветом, сохраняя их прозрачность — мгновенный силуэт.",
|
||
params: { color: "Цвет силуэта", threshold: "Порог видимости, %" },
|
||
},
|
||
"png-to-bytes": {
|
||
title: "PNG в байты",
|
||
description:
|
||
"Выводит каждый пиксель четырьмя десятичными байтами (R G B A), по строке изображения на строку текста.",
|
||
},
|
||
"bytes-to-png": {
|
||
title: "Байты в PNG",
|
||
description:
|
||
"Собирает изображение из десятичных RGBA-байтов (разделители любые). Укажите ширину — высота рассчитается сама.",
|
||
params: { width: "Ширина изображения" },
|
||
},
|
||
"png-to-rgb-values": {
|
||
title: "PNG в RGB-значения",
|
||
description:
|
||
"Выводит каждый пиксель как rgba(r, g, b, a), ряды через перевод строки.",
|
||
},
|
||
"rgb-values-to-png": {
|
||
title: "RGB-значения в PNG",
|
||
description:
|
||
"Собирает изображение из чисел rgba(r, g, b, a). Укажите ширину — высота рассчитается сама.",
|
||
params: { width: "Ширина изображения" },
|
||
},
|
||
"verify-is-png": {
|
||
title: "Проверить: это PNG?",
|
||
description:
|
||
"Проверяет сигнатуру вставленного base64 / data-uri и сообщает, настоящий ли это PNG.",
|
||
results: {
|
||
verifyYes: "Да — сигнатура настоящего PNG.",
|
||
verifyNo: "Нет — сигнатура не совпадает с PNG-файлом.",
|
||
},
|
||
},
|
||
"text-to-png": {
|
||
title: "Текст в PNG",
|
||
description:
|
||
"Создаёт PNG из текста: холст подгоняется под размер надписи с полями.",
|
||
params: {
|
||
text: "Текст",
|
||
fontSize: "Размер шрифта, px",
|
||
font: "Шрифт",
|
||
bold: "Жирный",
|
||
color: "Цвет текста",
|
||
transparentBg: "Прозрачный фон",
|
||
backgroundColor: "Цвет фона",
|
||
padding: "Отступ, px",
|
||
},
|
||
options: {
|
||
font: {
|
||
sans: "Без засечек",
|
||
serif: "С засечками",
|
||
mono: "Моноширинный",
|
||
},
|
||
},
|
||
},
|
||
"emoji-to-png": {
|
||
title: "Эмодзи в PNG",
|
||
description:
|
||
"Рисует эмодзи или любой Unicode-символ как прозрачный PNG выбранного размера.",
|
||
params: { emoji: "Эмодзи / символ", size: "Размер" },
|
||
},
|
||
"placeholder-png": {
|
||
title: "Заглушка PNG",
|
||
description:
|
||
"Генерирует прямоугольник-заглушку с напечатанными размерами в центре.",
|
||
params: {
|
||
width: "Ширина",
|
||
height: "Высота",
|
||
backgroundColor: "Фон",
|
||
color: "Цвет текста",
|
||
showText: "Печатать размеры",
|
||
},
|
||
},
|
||
"color-spectrum-png": {
|
||
title: "Спектр цветов PNG",
|
||
description:
|
||
"Полный радужный переход 0–360° вдоль выбранной оси с настройкой насыщенности и светлоты.",
|
||
params: {
|
||
width: "Ширина",
|
||
height: "Высота",
|
||
direction: "Направление",
|
||
saturation: "Насыщенность, %",
|
||
lightness: "Светлота, %",
|
||
},
|
||
options: {
|
||
direction: { horizontal: "По горизонтали", vertical: "По вертикали" },
|
||
},
|
||
},
|
||
"random-colors-png": {
|
||
title: "Случайные цветные блоки PNG",
|
||
description:
|
||
"Заполняет холст случайными яркими блоками. Детерминировано по seed.",
|
||
params: {
|
||
width: "Ширина",
|
||
height: "Высота",
|
||
blockSize: "Размер блока, px",
|
||
seed: "Seed",
|
||
},
|
||
},
|
||
"draw-grid-png": {
|
||
title: "Нарисовать сетку PNG",
|
||
description:
|
||
"Рисует сетку с заданными столбцами, строками и толщиной линий на прозрачном или белом фоне.",
|
||
params: {
|
||
width: "Ширина",
|
||
height: "Высота",
|
||
cols: "Столбцы",
|
||
rows: "Строки",
|
||
lineWidth: "Толщина линий, px",
|
||
color: "Цвет линий",
|
||
transparentBg: "Прозрачный фон",
|
||
},
|
||
},
|
||
"quantize-png": {
|
||
title: "Квантовать PNG",
|
||
description:
|
||
"Уменьшает изображение до k цветов через median-cut палитру. Прозрачные пиксели сохраняются.",
|
||
params: { colors: "Цветов (k)" },
|
||
},
|
||
"decrease-color-count-png": {
|
||
title: "Уменьшить число цветов PNG",
|
||
description:
|
||
"Тот же движок median-cut с фиксированными пресетами степеней двойки — быстрый спуск до 2–256 цветов.",
|
||
params: { maxColors: "Максимум цветов" },
|
||
options: {
|
||
maxColors: {
|
||
"2": "2",
|
||
"4": "4",
|
||
"8": "8",
|
||
"16": "16",
|
||
"32": "32",
|
||
"64": "64",
|
||
"128": "128",
|
||
"256": "256",
|
||
},
|
||
},
|
||
},
|
||
"custom-palette-png": {
|
||
title: "Своя палитра PNG",
|
||
description:
|
||
"Сопоставляет каждый пиксель с ближайшим цветом из вашего списка hex через запятую.",
|
||
params: { colors: "Палитра (hex через запятую)" },
|
||
},
|
||
"dithering-png": {
|
||
title: "Дизеринг PNG",
|
||
description:
|
||
"Применяет распространение ошибки Флойда–Стейнберга или упорядоченный Байер при сведении к k цветам.",
|
||
params: { colors: "Цветов (k)", pattern: "Узор" },
|
||
options: {
|
||
pattern: { "floyd-steinberg": "Флойд–Стейнберг", bayer: "Байер 4×4" },
|
||
},
|
||
},
|
||
"compress-png": {
|
||
title: "Сжать PNG",
|
||
description:
|
||
"Уменьшает размер PNG сокращением палитры до выбранного уровня. Честный компромисс: меньше цветов — меньше файл.",
|
||
params: { level: "Уровень сжатия" },
|
||
options: {
|
||
level: {
|
||
light: "Лёгкий (192 цвета)",
|
||
balanced: "Сбалансированный (96 цветов)",
|
||
strong: "Сильный (44 цвета)",
|
||
extreme: "Экстремальный (16 цветов)",
|
||
},
|
||
},
|
||
},
|
||
"reduce-to-size-png": {
|
||
title: "Вписать PNG в размер",
|
||
description:
|
||
"Бинарным поиском подбирает размер палитры, чтобы закодированный PNG уложился в целевое количество КБ. Если не влезает даже при 2 цветах — вернёт двухцветный вариант.",
|
||
params: {
|
||
targetKB: "Целевой размер, КБ",
|
||
maxColors: "Максимум цветов для перебора",
|
||
},
|
||
},
|
||
"png-file-size": {
|
||
title: "Размер файла PNG",
|
||
description:
|
||
"Кодирует изображение в PNG и показывает итоговый размер файла.",
|
||
results: {
|
||
line: "Размер PNG: {kb} КБ",
|
||
},
|
||
},
|
||
"show-transparent-png": {
|
||
title: "Показать прозрачные области PNG",
|
||
description:
|
||
"Подсвечивает выбранным цветом каждый прозрачный или полупрозрачный пиксель — дыры становятся заметными.",
|
||
params: {
|
||
mode: "Режим маски",
|
||
color: "Цвет подсветки",
|
||
opacity: "Непрозрачность подсветки, %",
|
||
},
|
||
options: {
|
||
mode: { binary: "Чёрно-белая маска", highlight: "Цветная подсветка" },
|
||
},
|
||
},
|
||
"show-grayscale-pixels-png": {
|
||
title: "Показать серые пиксели PNG",
|
||
description:
|
||
"Находит пиксели с почти равными каналами и рисует их маску. Допуск — в единицах канала.",
|
||
params: {
|
||
tolerance: "Допуск по каналам",
|
||
mode: "Режим маски",
|
||
color: "Цвет подсветки",
|
||
opacity: "Непрозрачность подсветки, %",
|
||
},
|
||
options: {
|
||
mode: { binary: "Чёрно-белая маска", highlight: "Цветная подсветка" },
|
||
},
|
||
},
|
||
"show-color-pixels-png": {
|
||
title: "Показать цветные пиксели PNG",
|
||
description:
|
||
"Находит цветные (не серые) пиксели за пределами допуска и рисует их маску.",
|
||
params: {
|
||
tolerance: "Допуск по каналам",
|
||
mode: "Режим маски",
|
||
color: "Цвет подсветки",
|
||
opacity: "Непрозрачность подсветки, %",
|
||
},
|
||
options: {
|
||
mode: { binary: "Чёрно-белая маска", highlight: "Цветная подсветка" },
|
||
},
|
||
},
|
||
"light-pixel-mask-png": {
|
||
title: "Маска светлых пикселей PNG",
|
||
description: "Выбирает пиксели ярче порога яркости.",
|
||
params: {
|
||
threshold: "Порог яркости, %",
|
||
mode: "Режим маски",
|
||
color: "Цвет подсветки",
|
||
opacity: "Непрозрачность подсветки, %",
|
||
},
|
||
options: {
|
||
mode: { binary: "Чёрно-белая маска", highlight: "Цветная подсветка" },
|
||
},
|
||
},
|
||
"dark-pixel-mask-png": {
|
||
title: "Маска тёмных пикселей PNG",
|
||
description: "Выбирает пиксели темнее порога яркости.",
|
||
params: {
|
||
threshold: "Порог яркости, %",
|
||
mode: "Режим маски",
|
||
color: "Цвет подсветки",
|
||
opacity: "Непрозрачность подсветки, %",
|
||
},
|
||
options: {
|
||
mode: { binary: "Чёрно-белая маска", highlight: "Цветная подсветка" },
|
||
},
|
||
},
|
||
"unique-color-mask-png": {
|
||
title: "Маска уникальных цветов PNG",
|
||
description:
|
||
"Выбирает цвета, которые встречаются не чаще заданного числа раз, — редкие и одиночные пиксели.",
|
||
params: {
|
||
rarity: "Максимум повторов",
|
||
mode: "Режим маски",
|
||
color: "Цвет подсветки",
|
||
opacity: "Непрозрачность подсветки, %",
|
||
},
|
||
options: {
|
||
mode: { binary: "Чёрно-белая маска", highlight: "Цветная подсветка" },
|
||
},
|
||
},
|
||
"extract-color-from-png": {
|
||
title: "Извлечь цвет из PNG",
|
||
description:
|
||
"Оставляет только пиксели, близкие к выбранному цвету, остальное делает прозрачным — обратное «Удалить цвет».",
|
||
params: {
|
||
color: "Какой цвет оставить",
|
||
tolerance: "Допуск похожести, %",
|
||
},
|
||
},
|
||
"watermark-tile-png": {
|
||
title: "Плитка-водяной знак PNG",
|
||
description:
|
||
"Покрывает изображение повторяющейся диагональной полупрозрачной плиткой текста — защитный водяной знак.",
|
||
params: {
|
||
text: "Текст",
|
||
fontSize: "Размер шрифта, px",
|
||
color: "Цвет текста",
|
||
opacity: "Непрозрачность, %",
|
||
angle: "Угол, °",
|
||
stepX: "Шаг X, px",
|
||
stepY: "Шаг Y, px",
|
||
font: "Шрифт",
|
||
bold: "Жирный",
|
||
},
|
||
options: {
|
||
font: {
|
||
sans: "Без засечек",
|
||
serif: "С засечками",
|
||
mono: "Моноширинный",
|
||
},
|
||
},
|
||
},
|
||
"watermark-image-png": {
|
||
title: "Знак картинкой PNG",
|
||
description:
|
||
"Накладывает другой PNG (логотип, подпись): масштаб от ширины холста, прозрачность, позиция 3×3. Знак живёт, пока открыта страница, — после восстановления цепочки выберите его заново.",
|
||
params: {
|
||
scale: "Ширина знака, % от холста",
|
||
opacity: "Непрозрачность, %",
|
||
position: "Позиция",
|
||
margin: "Отступ, px",
|
||
},
|
||
options: {
|
||
position: {
|
||
"top-left": "Сверху слева",
|
||
"top-center": "Сверху по центру",
|
||
"top-right": "Сверху справа",
|
||
"middle-left": "По центру слева",
|
||
center: "По центру",
|
||
"middle-right": "По центру справа",
|
||
"bottom-left": "Снизу слева",
|
||
"bottom-center": "Снизу по центру",
|
||
"bottom-right": "Снизу справа",
|
||
},
|
||
},
|
||
},
|
||
"add-text-png": {
|
||
title: "Надпись на PNG",
|
||
description:
|
||
"Рисует текст на изображении: шрифт, размер, цвет, жирность, позиция на сетке 3×3 и опциональная подложка.",
|
||
params: {
|
||
text: "Текст",
|
||
fontSize: "Размер шрифта, px",
|
||
color: "Цвет текста",
|
||
font: "Шрифт",
|
||
bold: "Жирный",
|
||
position: "Позиция",
|
||
margin: "Отступ, px",
|
||
plate: "Подложка",
|
||
plateColor: "Цвет подложки",
|
||
plateOpacity: "Прозрачность плашки, %",
|
||
},
|
||
options: {
|
||
font: {
|
||
sans: "Без засечек",
|
||
serif: "С засечками",
|
||
mono: "Моноширинный",
|
||
},
|
||
position: {
|
||
"top-left": "Сверху слева",
|
||
"top-center": "Сверху по центру",
|
||
"top-right": "Сверху справа",
|
||
"middle-left": "По центру слева",
|
||
center: "По центру",
|
||
"middle-right": "По центру справа",
|
||
"bottom-left": "Снизу слева",
|
||
"bottom-center": "Снизу по центру",
|
||
"bottom-right": "Снизу справа",
|
||
},
|
||
},
|
||
},
|
||
"date-stamp-png": {
|
||
title: "Дата-штамп PNG",
|
||
description:
|
||
"Ставит текущую дату и время по строке формата (токены YYYY MM DD hh mm ss). Оформление — как у надписи.",
|
||
params: {
|
||
format: "Формат",
|
||
fontSize: "Размер шрифта, px",
|
||
color: "Цвет текста",
|
||
font: "Шрифт",
|
||
bold: "Жирный",
|
||
position: "Позиция",
|
||
margin: "Отступ, px",
|
||
plate: "Подложка",
|
||
plateColor: "Цвет подложки",
|
||
plateOpacity: "Прозрачность плашки, %",
|
||
},
|
||
options: {
|
||
font: {
|
||
sans: "Без засечек",
|
||
serif: "С засечками",
|
||
mono: "Моноширинный",
|
||
},
|
||
position: {
|
||
"top-left": "Сверху слева",
|
||
"top-center": "Сверху по центру",
|
||
"top-right": "Сверху справа",
|
||
"middle-left": "По центру слева",
|
||
center: "По центру",
|
||
"middle-right": "По центру справа",
|
||
"bottom-left": "Снизу слева",
|
||
"bottom-center": "Снизу по центру",
|
||
"bottom-right": "Снизу справа",
|
||
},
|
||
},
|
||
},
|
||
"skew-png": {
|
||
title: "Наклонить PNG",
|
||
description:
|
||
"Сдвигает содержимое по горизонтали и вертикали — эффект перспективы.",
|
||
params: { degX: "Наклон по X, °", degY: "Наклон по Y, °" },
|
||
},
|
||
"rotate-free-png": {
|
||
title: "Повернуть на произвольный угол",
|
||
description:
|
||
"Поворот на любой угол. Холст расширяется под новые габариты, углы остаются прозрачными.",
|
||
params: { angle: "Угол, °" },
|
||
},
|
||
"zoom-png": {
|
||
title: "Приблизить PNG",
|
||
description:
|
||
"Увеличивает содержимое к центру. Холст прежнего размера — края обрезаются.",
|
||
params: { scale: "Масштаб, %" },
|
||
},
|
||
"shift-png": {
|
||
title: "Сдвинуть PNG",
|
||
description: "Перемещает содержимое на заданное смещение по X и Y.",
|
||
params: {
|
||
offsetX: "Смещение X, px",
|
||
offsetY: "Смещение Y, px",
|
||
color: "Цвет фона",
|
||
},
|
||
},
|
||
"vignette-png": {
|
||
title: "Виньетка PNG",
|
||
description: "Плавно затемняет края изображения, центр не затрагивает.",
|
||
params: { strength: "Сила затемнения, %" },
|
||
},
|
||
"jpeg-artifacts-png": {
|
||
title: "Артефакты JPEG",
|
||
description:
|
||
"Имитирует пережатие в JPEG с низким качеством — видимые квадраты и размытие цветов.",
|
||
params: { quality: "Качество JPEG" },
|
||
},
|
||
"gamma-png": {
|
||
title: "Гамма-коррекция PNG",
|
||
description:
|
||
"Корректирует яркость средних тонов. <1 темнее, >1 светлее, 1 — без изменений.",
|
||
params: { value: "Гамма" },
|
||
},
|
||
"auto-contrast-png": {
|
||
title: "Автоконтраст PNG",
|
||
description:
|
||
"Растягивает диапазон каждого канала на весь доступный диапазон яркости.",
|
||
},
|
||
"temperature-png": {
|
||
title: "Температура PNG",
|
||
description:
|
||
"Положительные значения делают изображение теплее (оранжевее), отрицательные — холоднее (синеватее).",
|
||
params: { percent: "Температура" },
|
||
},
|
||
"tint-png": {
|
||
title: "Тонировать PNG",
|
||
description:
|
||
"Умножает цветовые каналы на выбранный оттенок с заданной силой.",
|
||
params: { color: "Цвет тонирования", strength: "Сила, %" },
|
||
},
|
||
"svg-to-png": {
|
||
title: "SVG в PNG",
|
||
description:
|
||
"Декодирует SVG-разметку в растровое изображение. Вставьте SVG-код слева.",
|
||
params: { width: "Ширина результата, px" },
|
||
},
|
||
"png-is-transparent": {
|
||
title: "Проверить: PNG прозрачный?",
|
||
description:
|
||
"Сообщает, есть ли в изображении прозрачные или полупрозрачные пиксели.",
|
||
results: {
|
||
transparentYes: "Да — есть прозрачные или полупрозрачные пиксели.",
|
||
transparentNo: "Нет — все пиксели полностью непрозрачны.",
|
||
},
|
||
},
|
||
"png-orientation": {
|
||
title: "Ориентация PNG",
|
||
description: "Сообщает, портрет это, ландшафт или квадрат.",
|
||
results: {
|
||
orientationPortrait: "Портрет — высота больше ширины.",
|
||
orientationLandscape: "Ландшафт — ширина больше высоты.",
|
||
orientationSquare: "Квадрат — стороны равны.",
|
||
},
|
||
},
|
||
},
|
||
};
|