No description
  • Go 99.7%
  • Dockerfile 0.3%
Find a file
Ymnuk 9e4a9999d8
All checks were successful
continuous-integration/drone/tag Build is passing
Fix palette "lighter"
2023-12-12 10:05:48 +03:00
.vscode Работа с палитрой 2023-12-07 14:44:12 +03:00
docs Fix name 2023-12-07 16:09:33 +03:00
fonts Печать текста 2023-10-20 13:54:01 +03:00
http Работа с палитрой 2023-12-07 14:44:12 +03:00
lib Работа с палитрой 2023-12-07 14:44:12 +03:00
middlewares Add billing 2022-08-22 13:40:08 +03:00
routes Fix palette "lighter" 2023-12-12 10:05:48 +03:00
structs Fix name 2023-12-07 16:09:33 +03:00
.dockerignore Fix Dockerfile 2022-08-26 14:39:07 +03:00
.drone.yml Правка документации 2023-12-07 15:03:39 +03:00
.gitattributes Печать текста 2023-10-20 13:54:01 +03:00
.gitignore Корректировка игнорирования файлов 2023-10-23 09:09:42 +03:00
docker-compose.yml Добавление некоторых новых функций 2023-10-17 15:48:03 +03:00
Dockerfile Update docker build 2023-10-20 15:03:56 +03:00
Dockerfile.full Правка документации 2023-12-07 15:03:39 +03:00
go.mod Работа с палитрой 2023-12-07 14:44:12 +03:00
go.sum Работа с палитрой 2023-12-07 14:44:12 +03:00
main.go Получение информации из файла 2023-10-18 16:19:51 +03:00
README.md Исправление документации 2023-12-11 08:36:48 +03:00

Конвертер изображений

Данный сервис предназначен для конвертирования изображений из одного формата в другой, а так же для изменения размера по заданным параметра как конкретный размер, так и не более максимального заданного.

Формат запроса

POST http://<address>:<port>/?<params=values>
POST http://<address>:<port>?<params=values>

<params=values> - параметры со значениями конвертирования

- непосредственно изображние в бинарном виде

Параметры

width - ширина. Если указана но не указана высота, то высота изменяется в соответствии с пропорциями исходного изображения. Если не указан, то изменение размера не применяется.

height - высота. Если указана но не указана ширина, то ширина изменяется в соответствии с пропорциями исходного изображения. Если не указан, то изменение размера не применяется.

maxWidth - максимальная ширина. Если не указан, то изменение размера не применяется.

maxHeight - максимальная ширина. Если не указан, то изменение размера не применяется.

scale - во сколько раз масштабировать изображение. Дробное значение. Если указано, то параметры width, height, maxWidth и maxHeight игнорируются.

Максимальная ширина и высота дает возможность подбора. подбирается ширина и высота таким образом, чтобы ни ширна, ни высота, не привышали максимальных указанных значений (если меньше, то нормально).

format - указывается формат выходного файла. Если не указан, то применяется тот формат, который был передан изначально за исключением bmp, который поумолчанию сохраняется в png. /Если указан exif, то изображение не возвращается, а возвращается мета-информация, извлеченная из изображения./ Если указано несколько форматов через запятую, например, "jpeg,png,webp,tiff,bmp", то сервис сжимает все форматы и выбирает из них наименьший.

resize - алгоритм изменения размера изображения. Возможные варианты: nearest-neighbor, bilinear, bicubic, mitchell-netravali, lanczos2, lanczos3. Если изменение размера изображения не требуется, то этот параметр игнорируется. Если параметр не указан, то будет использоваться bilinear.

quality - качество сжатия. Применяется для форматов jpeg и webp в диапазоне от 0 до 100. Для других форматов игнорируется.

rotate - угол поворота, указанный в градусах

flipH - отразить горизонтально

flipV - отразить вертикально

grayscale - перевести в градацию серого

cropX0, cropY0, cropX1, cropY1

invert - инфертировать изображение

В заголовок может быть добавлен параметр apiKey в случае использования различных ограничений и идентификации пользователей/ресурсов. Для этого в переменных окружения запуска приложения должен указываться дополнительный параметр: ADMIN_API_KEY (Ключ приложения админимтратор). Данный ключ включает режим админимтрирования и задает такой ключ для управления.

Информация об изображении

POST http://<address>:<port>/info?<params=values>

<Body binary>

<params=values> - параметры со значениями конвертирования

- непосредственно изображние в бинарном виде

infelicity - погрешность (по умолчанию 10)

Возвращает информацию об изображении.

Преобразовать текст в картинку

POST http://<address>:<port>/font

<json>

list - Показывает список доступных шрифтов (если true) text - Текст, который необходимо вывести font - Название шрифта fontSize - Размер шрифта dpi - Разрешение шрифта color - Цвет шрифта align - Выравнивание (left/right/center) lineSpacing - интервал между строками в точках

Наложение одного изображение на другое

POST http://<address>:<port>/draw?<params=values>

multipart/form-data

Параметры

x - координата по X

y - координата по Y

format - указывается формат выходного файла. Если не указан, то применяется тот формат, который был передан изначально за исключением bmp, который поумолчанию сохраняется в png. /Если указан exif, то изображение не возвращается, а возвращается мета-информация, извлеченная из изображения./ Если указано несколько форматов через запятую, например, "jpeg,png,webp,tiff,bmp", то сервис сжимает все форматы и выбирает из них наименьший.

quality - качество сжатия. Применяется для форматов jpeg и webp в диапазоне от 0 до 100. Для других форматов игнорируется.

format - формат выходного файла

Параметры формы

imagebg - файл изображения, на который будет выполнено наложение

image - файл изображение, которое будет наложено на фоновый файл

Поддерживаемые форматы

jpeg/jpg, png, bmp, raw/cr2, webp, tiff

Работа с палитрой (генератор)

Для генерации палитры на основе параметров выполняется POST-запрос по адресу http://<address>:<port>/palette.

Запрос я вляется типом JSON и имеет следующую структуру.

declare interface Palette {
    color: string; // Цвет с которым нужно работать в формате HEX
    count: number; // Количество генерируемых цветов
    color2: string; // Второй цвет с которым нужно работать в формате HEX
    darker: number; // Сделать цвет темнее на указанный коэффициент. Требуется 1 цвет [0:1]
    lighter: number;  // Сделать цвет светлее на указанный коэффициент. Требуется 1 цвет [0:1]
    complementary: boolean; // Дополнить существующий цвет дополнительным. Требуется 1 цвет
    contrast: boolean; // Получить самый высокий контраст с данным цветом белого или черного. Требуется 1 цвет
    hue: number; // Получить цвет с той же легкостью и насыщением, но другой угол на цветовом колесе. Требуется 1 цвет (целое число)

    // Схемы
    triadic: boolean; // Получить цвета триадной схемы. Требуется 1 цвет
    quadratic: boolean; // Получить цвета квадратичной схемы. Требуется 1 цвет
    tetradic: boolean; // Получить цвета тетрадической схемы. Требуется 2 цвета
    analogous: boolean; // Получить цвета "аналогичной" схемы. Требуется 1 цвет
    splitComplementary: boolean; // Получить цвета "дополнительной" схемы с использованием дополнительных значений цвета. Требуется 1 цвет

    monochromatic: boolean; // Монохроматическая палитра. Требуется 1 цвет
    shades: boolean; // Смешанные от данного к черному. Требуется 1 цвет
    tints: boolean; // Смешанные от данного к белому. Требуется 1 цвет
    tones: boolean; // Смешанные от данного к серому. Требуется 1 цвет
    blends: boolean; // Смешанные друг к другу. Требуется 2 цвета

    // Генераторы
    pastel: boolean; // Генератор цветов пастэли
    warm: boolean; // Генератор тёплых цветов
    happy: boolean; // Генератор "счастливых" цветов
    similarHue: boolean; // Генератор цвета с оттенком, аналогичного к заданному. Требуется 1 цвет
}

Ответ от сервера

declare interface ImgColor {
    color?: string; // Цвет в формате HEX
    warm?: boolean; // Теплый цвет
    cool?: boolean; // Холодный цвет
}

Примеры использования

Генерация цвета темнее

POST http://<address>:<port>/palette
Content-Type: application/json

{
    "color": "#771122",
    "darker": 0.2
}

Генерация цвета светлее

POST http://<address>:<port>/palette
Content-Type: application/json

{
    "color": "#771122",
    "lighter": 0.7
}

Генерация цвета "Дополнить существующий цвет дополнительным"

POST http://<address>:<port>/palette
Content-Type: application/json

{
    "color": "#771122",
    "complementary": true
}

Генерация цвета "Получить самый высокий контраст с данным цветом белого или черного"

POST http://<address>:<port>/palette
Content-Type: application/json

{
    "color": "#771122",
    "contrast": true
}

Генерация цвета "Получить цвет с той же легкостью и насыщением, но другой угол на цветовом колесе. Требуется 1 цвет"

POST http://<address>:<port>/palette
Content-Type: application/json

{
    "color": "#771122",
    "hue": 90
}

Генерация цвета "Получить цвета триадной схемы. Требуется 1 цвет"

POST http://<address>:<port>/palette
Content-Type: application/json

{
    "color": "#771122",
    "triadic": true
}

Генерация цвета "Получить цвета квадратичной схемы. Требуется 1 цвет"

POST http://<address>:<port>/palette
Content-Type: application/json

{
    "color": "#771122",
    "quadratic": true
}

Генерация цвета "Получить цвета тетрадической схемы. Требуется 2 цвета"

POST http://<address>:<port>/palette
Content-Type: application/json

{
    "color": "#771122",
    "color2": "#22FF66",
    "tetradic": true
}

Генерация цвета "Получить цвета "аналогичной" схемы. Требуется 1 цвет"

POST http://<address>:<port>/palette
Content-Type: application/json

{
    "color": "#771122",
    "analogous": true
}

Генерация цвета "Получить цвета "дополнительной" схемы с использованием дополнительных значений цвета. Требуется 1 цвет"

POST http://<address>:<port>/palette
Content-Type: application/json

{
    "color": "#771122",
    "splitComplementary": true
}

Генерация цвета "Монохроматическая палитра. Требуется 1 цвет"

POST http://<address>:<port>/palette
Content-Type: application/json

{
    "color": "#771122",
    "count": 8,
    "monochromatic": true
}

Генерация цвета "Смешанные от данного к черному. Требуется 1 цвет"

POST http://<address>:<port>/palette
Content-Type: application/json

{
    "color": "#771122",
    "count": 8,
    "shades": true
}

Генерация цвета "Смешанные от данного к белому. Требуется 1 цвет"

POST http://<address>:<port>/palette
Content-Type: application/json

{
    "color": "#771122",
    "count": 8,
    "tints": true
}

Генерация цвета "Смешанные от данного к серому. Требуется 1 цвет"

POST http://<address>:<port>/palette
Content-Type: application/json

{
    "color": "#771122",
    "count": 8,
    "tones": true
}

Генерация цвета "Смешанные друг к другу. Требуется 2 цвета"

POST http://<address>:<port>/palette
Content-Type: application/json

{
    "color": "#771122",
    "count": 8,
    "color2": "#22FF66",
    "blends": true
}

Генерация цвета "Генератор цветов пастэли"

POST http://<address>:<port>/palette
Content-Type: application/json

{
    "count": 8,
    "pastel": true
}

Генерация цвета "Генератор тёплых цветов"

POST http://<address>:<port>/palette
Content-Type: application/json

{   
    "count": 8,
    "warm": true
}

Генерация цвета "Генератор "счастливых" цветов"

POST http://<address>:<port>/palette
Content-Type: application/json

{
    "count": 8,
    "happy": true
}

Генерация цвета "Генератор цвета с оттенком, аналогичного к заданному. Требуется 1 цвет"

POST http://<address>:<port>/palette
Content-Type: application/json

{
    "color": "#771122",
    "count": 8,
    "similarHue": true
}

About

http://<address>:<port>/about

Информация о сервисе. Игнорирует данны для конвертирования (если они были переданы) и выдает информацию о себе.

Help

http://<address>:<port>/help

Выдает справку использования сервиса, описанную выше.