diff --git a/proto/images/images.proto b/proto/images/images.proto index 7e2c35299d5c3229d48d7149e75b7a7f68ab494a..74a0554c434e06273abc51b5e3ba3fee4c4824fc 100644 --- a/proto/images/images.proto +++ b/proto/images/images.proto @@ -6,9 +6,34 @@ option go_package = "git.perx.ru/perxis/perxis-go/proto/images;images"; package images; +// Команда для обрезки изображения +message CropCommand { + int64 width = 1; + int64 height = 2; + string resampling = 3; +} + +// Команда для подгонки изображения под заданные размеры +message FitCommand { + int64 width = 1; + int64 height = 2; + string resampling = 3; +} + +// Команда для изменения размера изображения +message ResizeCommand { + int64 width = 1; + int64 height = 2; + string resampling = 3; +} + +// Общая команда для обработки изображения message Command { - string op = 1; - repeated string value = 2; + oneof command_type { + CropCommand crop = 1; + FitCommand fit = 2; + ResizeCommand resize = 3; + } } message GetRequest { @@ -20,22 +45,22 @@ message GetRequest { repeated Command commands = 2; // Название пресета, предустановленные параметры которого будут использоваться по умолчанию. - optional string preset = 3; + string preset = 3; // Целевой формат изображения, в который будет преобразовано исходное изображение. - optional string format = 4; + string format = 4; // Качество изображения. Значение от 1 до 100. - optional int32 quality = 5; + int32 quality = 5; // Тип изображения для оптимизации. Поддерживается для форматов: webp. - optional string hint = 6; + string hint = 6; // Режим масштабирования для команд, связанных с изменением размера изображения. - optional string resampling = 7; + string resampling = 7; // Флаг, указывающий, нужно ли сохранять изображение в кэше. - optional bool no_cache = 8; + bool no_cache = 8; } files.File source = 1; @@ -49,21 +74,6 @@ message GetResponse { // ImageService - сервис для обработки изображений service Images { - // Применяет переданные команды и параметры к файлу, идентификатор которого передан в запросе. - // - // Команды выполняются в порядке их передачи. - // Поддерживаемые команды: - // - crop (ширина, высота, режим масштабирования (опционально)) - // - fit (ширина, высота, режим масштабирования (опционально)) - // - resize (ширина, высота, режим масштабирования (опционально)) - // - format (один из форматов: jpeg, png, gif, tiff, bmp) - // Параметры команды должны быть разделены знаком тире (-). - - // Размеры могут быть указаны в следующих форматах: - // - 128-128 (старый формат) - // - 128x128 (новый формат) - // - 128x (только ширина) - // - x128 (только высота) - // Возвращает объект File с заполненным полем File.URL + // Применяет команды и параметры к файлу и возвращает объект File с заполненным полем URL rpc Get(GetRequest) returns(GetResponse) {} }