- Go 99.7%
- Dockerfile 0.3%
|
|
||
|---|---|---|
| .vscode | ||
| docs | ||
| fonts | ||
| http | ||
| lib | ||
| middlewares | ||
| routes | ||
| structs | ||
| .dockerignore | ||
| .drone.yml | ||
| .gitattributes | ||
| .gitignore | ||
| docker-compose.yml | ||
| Dockerfile | ||
| Dockerfile.full | ||
| go.mod | ||
| go.sum | ||
| main.go | ||
| README.md | ||
Конвертер изображений
Данный сервис предназначен для конвертирования изображений из одного формата в другой, а так же для изменения размера по заданным параметра как конкретный размер, так и не более максимального заданного.
Формат запроса
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
Выдает справку использования сервиса, описанную выше.