VK Cloud logo

Методы обработки изображений

Метод improve применяется для улучшения фотографий.

Запрос

Авторизационные данные передаются в строке запроса:

ПараметрТипЗначение
oauth_token
string
OAuth2 access token (required non-empty)
oauth_provider
string
Провайдер OAuth2 (required non-empty)

Поддерживаемые провайдеры OAuth2:

ПровайдерЗначение oauth_providerПолучение токена
VK Cloud
mcs

Параметры запроса передаются в формате JSON в теле запроса с name="meta":

ПараметрТипЗначение
mode
[]string
Типы объектов, которые требуется искать на переданных изображениях (required non-empty)
images
[]image_meta
Метаданные передаваемых изображений (required non-empty)
rfactor
int
Коэффициент увеличения разрешения, может принимать значения либо 2, либо 4  (required non-empty for resolution mode)
ftype
string
Тип изображения, "art" или "photo"  (required non-empty for resolution mode)

Возможные значения mode:

ПараметрЗначение
improve
Восстановление фотографий
resolution
Увеличение разрешения

image_meta

ПараметрТипЗначение
name
string
Имена файлов для сопоставления файлов в запросе и ответе (required non-empty)

Изображения передаются в теле запроса, значения поля name должны соответствовать переданным в images.

Максимальное количество изображений в одном запросе равняется 48. Максимальный размер каждого изображения не должен превышать 8МБ.

Пример запроса:

POST /api/v1/photo/improve/?oauth_provider=mr&oauth_token=123 HTTP/1.1

Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryfCqTBHeLZlsicvMp

------WebKitFormBoundaryfCqTBHeLZlsicvMp
Content-Disposition: form-data; name="file_0"; filename=""
Content-Type: image/jpeg

000000000000000000000000000
000000000000000000000000000
000000000000000000000000000
------WebKitFormBoundaryfCqTBHeLZlsicvMp
Content-Disposition: form-data; name="file_1"; filename=""
Content-Type: image/jpeg

111111111111111111111111111
111111111111111111111111111
111111111111111111111111111
------WebKitFormBoundaryfCqTBHeLZlsicvMp
Content-Disposition: form-data; name="meta"

{"images":[{"name":"file_0"}, {"name":"file_1"}], "mode":["improve", "resolution"]}
------WebKitFormBoundaryfCqTBHeLZlsicvMp--

Ответ

ПараметрТипЗначение
status
int
200 в случае успеха, иначе описание ошибки будет в body
body
string
Тело ответа

response

ПараметрТипЗначение
improve
[]improve_object
Массив ответов для improve mode
resolution
[]resolution_object
Массив ответов для resolution mode

improve_object

ПараметрТипЗначение
status
enum
Результат выполнения
error
string
Текстовое описание ошибки (optional)
name
string
Имя файла для сопоставления файлов в запросе и ответе
improved
string
Jpeg картинка фотографии с исправленными дефектами (base64). Поле может отсутствовать или быть пустым, если по мнению алгоритма фотографию нет смысла восстанавливать (она и так хороша)
colorized_improved
string
Jpeg картинка фотографии с исправленными дефектами и восстановленным цветом (base64). Поле может отсутствовать или быть пустым, если по мнению алгоритма фотографию нет смысла восстанавливать и закрашивать
colorized
string
Jpeg картинка фотографии с восстановленным цветом (base64)
bw
bool
True — алгоритм считает, что ему дали на вход чёрно-белую фотографию, false — алгоритм считает, что ему дали на вход цветную фотографию

resolution_object

ПараметрТипЗначение
status
enum
Результат выполнения
error
string
Текстовое описание ошибки (optional)
name
string
Имя файла для сопоставления файлов в запросе и ответе
resolved
string
Jpeg картинка фотографии с увеличенным разрешением (base64)

status

ПараметрЗначение
0
Успешно
1
Перманентная ошибка
2
Временная ошибка

Пример ответа:

1{
2   "status":200,
3   "body":{
4      "status":0,
5      "improve":[
6         {
7            "status":0,
8            "name":"file_0",
9            "improved":"base64",
10            "colorized_improved":"base64",
11            "colorized":"base64",
12            "bw":true
13         }
14      ],
15      "resolution":[
16          {
17            "status":0,
18            "name":"file_0",
19            "resolved":"base64"
20         }
21      ]
22   }
23}

Пример ответа, когда не удалось выполнить запрос:

1{
2    "status":500,
3    "body":"Internal Server Error",
4    "htmlencoded":false,
5    "last_modified":0
6}

Пример ответа, если не получилось загрузить картинку:

1{
2   "status":200,
3   "body":{
4      "improve":[
5       {
6           "status":2,
7           "error":"unable decode input image",
8           "name":"file_0"
9       }
10     ]
11   },
12   "htmlencoded":false,
13   "last_modified":0
14}

Пример curl запроса:

curl -v "https://smarty.mail.ru/api/v1/photo/improve?oauth_provider=mcs&oauth_token=token" -F file_0=@test.jpeg -F meta='{"images":[{"name":"file_0"}], "mode":["resolution", "improve"], "rfactor":4, "rtype":"art"}'