API векторизации изображений

Vectorizer.AI предлагает полноценный API трассировки растровых изображений. API преобразует пиксели в векторы полностью автоматически и с лучшей в своем классе точностью.

Получить ключ API

Быстрый старт

Сделайте запрос POST на растровое изображение и получите векторизированный результат:

$ curl https://ru.vectorizer.ai/api/v1/vectorize \
 -u xyz123:[secret] \
 -F image=@example.jpeg \
 -o result.svg
// Requires: org.apache.httpcomponents.client5:httpclient5-fluent

Request request = Request.post("https://ru.vectorizer.ai/api/v1/vectorize")
   .addHeader("Authorization", "Basic dmt5YzY3a3FhMjd5aWRkOltzZWNyZXRd")
   .body(
      MultipartEntityBuilder.create()
         .addBinaryBody("image", new File("example.jpeg")) // TODO: Replace with your image
         // TODO: Add more upload parameters here
         .build()
      );
ClassicHttpResponse response = (ClassicHttpResponse) request.execute().returnResponse();

if (response.getCode() == 200) {
   // Write result to disk, TODO: or wherever you'd like
   try (FileOutputStream out = new FileOutputStream("result.svg")) {
      response.getEntity().writeTo(out);
   }
} else {
   System.out.println("Request Failed: Status: " + response.getCode() + ", Reason: " + response.getReasonPhrase());
}
using (var client = new HttpClient())
using (var form = new MultipartFormDataContent())
{
   client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", "INSERT_API_KEY_HERE");
   form.Add(new ByteArrayContent(File.ReadAllBytes("example.jpeg")), "image", "example.jpeg"); // TODO: Replace with your image
   // TODO: Add more upload parameters here

   var response = client.PostAsync("https://ru.vectorizer.ai/api/v1/vectorize", form).Result;

   if (response.IsSuccessStatusCode)
   {
      // Write result to disk, TODO: or wherever you'd like
      FileStream outStream = new FileStream("result.svg", FileMode.Create, FileAccess.Write, FileShare.None);
      response.Content.CopyToAsync(outStream).ContinueWith((copyTask) => { outStream.Close(); });
   }
   else
   {
       Console.WriteLine("Request Failed: Status: " + response.StatusCode + ", Reason: " + response.ReasonPhrase);
   }
}
// Requires "request" to be installed (see https://www.npmjs.com/package/request)
var request = require('request');
var fs = require('fs');

request.post({
  url: 'https://ru.vectorizer.ai/api/v1/vectorize',
  formData: {
    image: fs.createReadStream('example.jpeg'), // TODO: Replace with your image
    // TODO: Add more upload options here
  },
  auth: {user: 'xyz123', pass: '[secret]'},
  followAllRedirects: true,
  encoding: null
}, function(error, response, body) {
  if (error) {
    console.error('Request failed:', error);
  } else if (!response || response.statusCode != 200) {
    console.error('Error:', response && response.statusCode, body.toString('utf8'));
  } else {
    // Save result
    fs.writeFileSync("result.svg", body);
  }
});
$ch = curl_init('https://ru.vectorizer.ai/api/v1/vectorize');

curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER,
    array('Authorization: Basic dmt5YzY3a3FhMjd5aWRkOltzZWNyZXRd'));
curl_setopt($ch, CURLOPT_POSTFIELDS,
    array(
      'image' => curl_file_create('example.jpeg'),
      // TODO: Add more upload options here
    ));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

$data = curl_exec($ch);
if (curl_getinfo($ch, CURLINFO_HTTP_CODE) == 200) {
  // Save result
  file_put_contents("result.svg", $data);
} else {
  echo "Error: " . $data;
}
curl_close($ch);
# Either use the sample code below, or this SDK: https://pypi.org/project/vectorizer-ai/
# Requires "requests" to be installed (see https://pypi.org/project/requests/)
import requests

response = requests.post(
    'https://ru.vectorizer.ai/api/v1/vectorize',
    files={'image': open('example.jpeg', 'rb')},
    data={
        # TODO: Add more upload options here
    },
    auth=('xyz123', '[secret]')
)
if response.status_code == requests.codes.ok:
    # Save result
    with open('result.svg', 'wb') as out:
        out.write(response.content)
else:
    print("Error:", response.status_code, response.text)
# Requires: gem install httpclient
require 'httpclient'

client = HTTPClient.new default_header: {
  "Authorization" => "Basic dmt5YzY3a3FhMjd5aWRkOltzZWNyZXRd"
}

response = client.post("https://ru.vectorizer.ai/api/v1/vectorize", {
  "image" => File.open("example.jpeg", "rb"), # TODO: Replace with your image
  # TODO: Add more upload parameters here
})

if response.status == 200 then
  # Write result to disk, TODO: or wherever you'd like
  File.open("result.svg", 'w') { |file| file.write(response.body) }
else
  puts "Error: Code: " + response.status.to_s + ", Reason: " + response.reason
end
$ curl https://ru.vectorizer.ai/api/v1/vectorize \
 -u xyz123:[secret] \
 -F 'image.url=https://example.com/example.jpeg' \
 -o result.svg
// Requires: org.apache.httpcomponents.client5:httpclient5-fluent

Request request = Request.post("https://ru.vectorizer.ai/api/v1/vectorize")
   .addHeader("Authorization", "Basic dmt5YzY3a3FhMjd5aWRkOltzZWNyZXRd")
   .body(
      MultipartEntityBuilder.create()
         .addTextBody("image.url", "https://example.com/example.jpeg") // TODO: Replace with your image URL
         // TODO: Add more upload parameters here
         .build()
      );
ClassicHttpResponse response = (ClassicHttpResponse) request.execute().returnResponse();

if (response.getCode() == 200) {
   // Write result to disk, TODO: or wherever you'd like
   try (FileOutputStream out = new FileOutputStream("result.svg")) {
      response.getEntity().writeTo(out);
   }
} else {
   System.out.println("Request Failed: Status: " + response.getCode() + ", Reason: " + response.getReasonPhrase());
}
using (var client = new HttpClient())
using (var form = new MultipartFormDataContent())
{
   client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", "INSERT_API_KEY_HERE");
   form.Add(new StringContent("https://example.com/example.jpeg"), "image.url"); // TODO: Replace with your image URL
   // TODO: Add more upload parameters here

   var response = client.PostAsync("https://ru.vectorizer.ai/api/v1/vectorize", form).Result;

   if (response.IsSuccessStatusCode)
   {
      // Write result to disk, TODO: or wherever you'd like
      FileStream outStream = new FileStream("result.svg", FileMode.Create, FileAccess.Write, FileShare.None);
      response.Content.CopyToAsync(outStream).ContinueWith((copyTask) => { outStream.Close(); });
   }
   else
   {
       Console.WriteLine("Request Failed: Status: " + response.StatusCode + ", Reason: " + response.ReasonPhrase);
   }
}
// Requires "request" to be installed (see https://www.npmjs.com/package/request)
var request = require('request');
var fs = require('fs');

request.post({
  url: 'https://ru.vectorizer.ai/api/v1/vectorize',
  formData: {
    'image.url': 'https://example.com/example.jpeg', // TODO: Replace with your image
    // TODO: Add more upload options here
  },
  auth: {user: 'xyz123', pass: '[secret]'},
  followAllRedirects: true,
  encoding: null
}, function(error, response, body) {
  if (error) {
    console.error('Request failed:', error);
  } else if (!response || response.statusCode != 200) {
    console.error('Error:', response && response.statusCode, body.toString('utf8'));
  } else {
    // Save result
    fs.writeFileSync("result.svg", body);
  }
});
$ch = curl_init('https://ru.vectorizer.ai/api/v1/vectorize');

curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER,
    array('Authorization: Basic dmt5YzY3a3FhMjd5aWRkOltzZWNyZXRd'));
curl_setopt($ch, CURLOPT_POSTFIELDS,
    array(
      'image.url' => 'https://example.com/example.jpeg',
      // TODO: Add more upload options here
    ));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

$data = curl_exec($ch);
if (curl_getinfo($ch, CURLINFO_HTTP_CODE) == 200) {
  // Save result
  file_put_contents("result.svg", $data);
} else {
  echo "Error: " . $data;
}
curl_close($ch);
# Either use the sample code below, or this SDK: https://pypi.org/project/vectorizer-ai/
# Requires "requests" to be installed (see https://pypi.org/project/requests/)
import requests

response = requests.post(
    'https://ru.vectorizer.ai/api/v1/vectorize',
    data={
        'image.url': 'https://example.com/example.jpeg',
        # TODO: Add more upload options here
    },
    auth=('xyz123', '[secret]')
)
if response.status_code == requests.codes.ok:
    # Save result
    with open('result.svg', 'wb') as out:
        out.write(response.content)
else:
    print("Error:", response.status_code, response.text)
# Requires: gem install httpclient
require 'httpclient'

client = HTTPClient.new default_header: {
  "Authorization" => "Basic dmt5YzY3a3FhMjd5aWRkOltzZWNyZXRd"
}

response = client.post("https://ru.vectorizer.ai/api/v1/vectorize", {
  "image.url" => "https://example.com/example.jpeg", # TODO: Replace with your image URL
  # TODO: Add more upload parameters here
})

if response.status == 200 then
  # Write result to disk, TODO: or wherever you'd like
  File.open("result.svg", 'w') { |file| file.write(response.body) }
else
  puts "Error: Code: " + response.status.to_s + ", Reason: " + response.reason
end

Чатбот API

Мы создали специальный ChatGPT, который поможет вам с интеграцией API. Он может ответить на вопросы по документации API и предоставить пример кода на предпочитаемом вами языке, адаптированный под ваш вариант использования.

Чат с чат-ботом API Vectorizer.AI

Чат-бот находится в стадии бета-тестирования и допускает ошибки. Еще раз проверьте ответы и попросите пересмотреть код, чтобы исправить ошибки и пропуски.

Как использовать этот API

API разработан для поддержки множества различных вариантов использования. Вот некоторые из наиболее распространенных:

Единичное изображение Отправьте растровое изображение, получите векторный результат, готово

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

Предварительный просмотр Предложите предварительный просмотр потенциальному клиенту перед покупкой

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

  1. Используйте конечную точку Векторизировать с mode=preview и policy.retention_days > 0 для получения предварительного просмотра, обязательно сохранив токен изображения, возвращаемый в заголовке ответа X-Image-Token.

  2. После преобразования используйте конечную точку Скачать с токеном изображения, чтобы скачать полный результат.

  3. Дополнительно: если вам нужны дополнительные форматы результатов (например, PNG, PDF и т.д.), обязательно сохраните квитанцию, возвращенную в заголовке ответа скачивания X-Receipt. Затем используйте конечную точку Скачать с токеном изображения и квитанцией для загрузки оставшихся форматов.

Мультиформат Вам нужны, например, результаты в форматах PNG и SVG

  1. Используйте конечную точку Векторизировать с policy.retention_days > 0, чтобы получить первый результат, при этом обязательно сохраните токен изображения, возвращенный в заголовке ответа X-Image-Token.

  2. Используйте конечную точку Скачать с токеном изображения для скачивания других форматов.

Многовариантность Вам нужно обработать каждое изображение с использованием нескольких вариантов обработки

  1. Используйте конечную точку Векторизировать с policy.retention_days > 0, чтобы получить первый результат, при этом обязательно сохраните токен изображения, возвращенный в заголовке ответа X-Image-Token.

  2. Используйте конечную точку Векторизировать с токеном изображения для итерации оставшихся необходимых вам параметров обработки.

  3. Как вариант, вы можете обрабатывать каждое изображение отдельно и не беспокоиться о токене изображения. Image Token экономит вам часть пропускной способности и задержек.

Цены

ДействиеКредитыОписание
Тестирование0.00

Интеграция и тестирование API бесплатны, подписка не требуется.

Используйте mode=test и mode=test_preview для разработки.

Оценить качество результата можно с помощью интерактивного веб-приложения на главной странице.

Просмотр0.20

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

Просмотр представляет собой PNG-изображение, которое в четыре раза больше вашего оригинала и снабжено незаметным водяным знаком.

Чтобы получить результат просмотра, используйте mode=preview.

Векторизация1.00 Векторизируйте растровое изображение в векторное.
Просмотр обновлений0.90 Скачайте результат работы после предварительного вызова API. Скидка по сравнению с векторизацией с нуля.
Формат скачивания0.10 Скачайте другой формат результата (например, SVG, PNG, PDF и т.д.). Скидка по сравнению с векторизацией с нуля.
День хранения0.01 Цена за день хранения результата после первого бесплатного дня.

Планы подписки можно найти на странице цен.

Аутентификация и безопасность

API использует стандартную аутентификацию основного доступа HTTP. Все запросы к API должны выполняться через HTTPS и включать ваши учетные данные API с вашим идентификатором пользователя API и секретом API в качестве пароля.

Для успешного выполнения запросов Ваша клиентская библиотека http должна поддерживать указание имени сервера (SNI). Если вы получаете странные ошибки подтверждения, скорее всего, проблема именно в этом.

Ограничение скорости

Использование API ограничено по скорости с щедрыми надбавками и без жесткого верхнего предела.

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

Однако для пакетных заданий мы рекомендуем начинать не более, чем с 5 потоков, добавляя по 1 новому потоку каждые 5 минут, пока вы не достигнете желаемого уровня параллелизма. Пожалуйста, свяжитесь с нами перед началом работы, если вам нужно более 100 одновременных потоков.

Если вы направите слишком много запросом, вы начнете получать отклики 429 Too Many Requests. Когда это произойдет, вы должны применить линейную выдержку: при первом таком отклике подождите 5 секунд перед отправлением следующего запроса. При втором последовательном отклике 429 подождите 2*5=10 секунд перед отправлением следующего запроса. При третьем подождите 3*4=15 секунд и т.д.

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

Тайм-ауты

Хотя запросы API обычно выполняются в течение нескольких секунд, во время временных пиковых нагрузок время обработки может увеличиться.

Чтобы ваша клиентская библиотека не прерывала преждевременно запросы API, ее следует настроить с тайм-аутом простоя не менее 180 секунд.

JSON ошибки

Мы используем обычные статусы HTTP для указания выполнения или невыполнения запроса API и включаем важную информацию об ошибке в направляемый JSON объект ошибки.

Мы стремимся всегда указывать JSON объект ошибки для любого невыполненного запроса. Однако теоретически всегда возможны внутренние сбои сервера, которые приводят к отклику об ошибке не в формате JSON.

Атрибуты

statusСтатус HTTP отклика, повторяется для оказания помощи в отладке.
codeВнутренний код ошибки Vectorizer.AI.
messageСообщение об ошибке в понятном для человека формате для помощи в отладке.

Если статус HTTP для вашего запроса равен 200, вы не получите JSON объекта ошибки и можете с уверенностью предположить, что запрос в целом выполнен успешно.

Некоторые клиентские библиотеки HTTP вызывают исключения для статусов HTTP в диапазоне 400-599. Вам нужно будет перехватить эти исключения и обработать их соответствующим образом.

HTTP StatusЗначение
200-299

Успешно выполнено

400-499

Возникла проблема с информацией, предоставленной в запросе (например, отсутствует параметр). Пожалуйста, прочитайте сообщение об ошибке, чтобы узнать, как ее исправить.

500-599

Произошла внутренняя ошибка Vectorizer.AI. Подождите немного, а затем попробуйте еще раз, и, если проблема не исчезнет, отправьте нам сообщение.

Пример сообщения об ошибке

{
  "error" : {
    "status" : 400,
    "code" : 1006,
    "message" : "Failed to read the supplied image. "
  }
}

Недавние ошибки API перечислены на странице вашей учетной записи для удобства отладки.

Также имеется список всех ответов об ошибках, возвращаемых API.

Заголовки ответа

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

ЗаголовокОписание
X-Image-Token

Возвращается, если ваш запрос на векторизацию содержит policy.retention_days > 0. Можно использовать для:

  1. Скачайте результат работы после вызова API для предварительного просмотра со скидкой по сравнению с векторизацией с нуля.

  2. Скачайте дополнительные форматы результата (например, SVG, PNG, PDF и т. д.) по более низкой цене по сравнению с векторизацией с нуля.

  3. Повторно векторизируйте одно и то же изображение с различными вариантами обработки.

X-Receipt

Возвращается при скачивании результата работы с использованием токена изображения предварительного просмотра. Может использоваться для скачивания дополнительных форматов (например, SVG, PNG, PDF и т.д.) результата по цене скачивания формата вместо цены предварительного просмотра обновления.

X-Credits-Calculated

Возвращается с тестовыми запросами, чтобы показать стоимость в случае, если бы это был обычный запрос.

X-Credits-Charged

Возвращается со всеми запросами на просмотр расходов. Всегда 0 для тестовых запросов.

Векторизация POST
https://api.vectorizer.ai/api/v1/vectorize

Чтобы векторизировать изображение, вы выполняете стандартную загрузку файла HTTP POST. Помните, что при загрузке двоичных файлов Content-Type должен быть multipart/form-data .

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

Параметры

Входное изображение должно иметь быть представлено одним из следующих вариантов:


Двоичный

Двоичный файл.


Строка

Строка в кодировке base64. Строка может иметь размер не более 1 мегабайта.


Строка

URL-адрес для получения и обработки.


Токен изображения, возвращаемый в заголовке X-Image-Token в более раннем вызове API векторизации, где policy.retention_days > 0.

Должно быть файлом в формате .bmp, .gif, .jpeg, .png или .tiff.

Максимальный размер загружаемого изображения (= ширина × высота) составляет 33 554 432 пикселя, что сокращается до input.max_pixels.


Перечисление, по умолчанию: production
Value Processing Mode Credits
production

Этот режим предназначен для производственного использования, поддерживаются все параметры.

1.00
preview

Этот режим предназначен для случаев, когда вы хотите показать конечному пользователю предварительный просмотр перед совершением покупки.

Он создает в 4 раза больший результат в формате PNG с незаметным водяным знаком, игнорируя любые противоречивые параметры.

0.20
test, test_preview

Эти режимы предназначены для использования разработчиками при интеграции с сервисом. Поддерживаются все параметры, но есть значительные водяные знаки.

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

Мы включаем в ответ заголовок X-Credits-Calculated, чтобы вы могли точно знать, какова была бы стоимость соответствующих вызовов при обработке.

Бесплатно

Целое число, от 100 до 3145828, по умолчанию: 2097252

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


Целое число, от 0 до 30, по умолчанию: 0

Количество дней, в течение которых необходимо хранить входное изображение и его результат. При указании policy.retention_days > 0 мы включаем в ответ заголовок X-Image-Token.

Это делается для достижения трех основных целей:

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

  2. После векторизации изображения вы можете скачать несколько выходных форматов для одного и того же изображения и вариантов обработки, не векторизуя их все с нуля. Это позволяет значительно сэкономить как кредиты, так и время задержки.

  3. Когда вы хотите повторно векторизовать одно и то же изображение с различными параметрами обработки. Это позволяет сократить задержку вызова и сэкономить на пропускной способности.

Первый день хранения бесплатный, затем взимается плата в размере 0,01 кредитов в день.

Смотрите также конечную точку Скачать.


Целое число, от 0 до 256, по умолчанию: 0

Максимальное количество цветов, используемых для результата.

0 означает без ограничений. И 1 и 2 означают два цвета, например, черный и белый. N>=2 означает это количество цветов.

Обратите внимание: если output.gap_filler.enabled=true (по умолчанию), результат также будет содержать смеси выбранных цветов. Отключите заполнитель пробелов, чтобы получить результат только с выбранными цветами.


Формат: '[color][-> remapped][~ tolerance];'
#00000000;
#FFFFFF ~ 0.1;
#0000FF -> #00FF00;
#FF0000 -> #00FF00 ~ 0.1;

По умолчанию:   (пустой)

Это очень мощный и гибкий механизм управления цветами в итоговом изображении.

Цвета, обнаруженные в изображении, находящиеся в пределах допуска любого из цветов палитры, будут привязаны к ближайшему к ним цвету палитры и переназначены, если для этого цвета палитры указано переназначение. Несовпадающие цвета остаются без изменений.

Пример

Чтобы привязать обнаруженные цвета к ближайшему из красного, зеленого и синего цвета, используйте:

#FF0000; 
#00FF00; 
#0000FF;

Чтобы очистить обнаруженные цвета, близкие к красному, зеленому и синему, но оставить остальные без изменений, используйте:

#FF0000 ~ 0.02; 
#00FF00 ~ 0.02; 
#0000FF ~ 0.02;

Чтобы превратить обнаруженные цвета, близкие к красному, в зеленые, оставив все остальное без изменений, используйте:

#FF0000 -> #00FF00 ~ 0.02;

Чтобы привязать к этим цветам что-либо близкое к красному, зеленому и синему, но привязать все остальные цвета к прозрачному черному (тем самым удалив их из результата), используйте:

#FF0000 ~ 0.02; 
#00FF00 ~ 0.02; 
#0000FF ~ 0.02; 
#00000000; // Transparent => removed

Цвета

Цвета задаются с использованием базового синтаксиса цветов CSS. Для (частично) прозрачных цветов мы рекомендуем использовать #RRGGBBAA. Для непрозрачных цветов мы рекомендуем использовать #RRGGBB.

Полностью прозрачные цвета в результате исключены. Вместе с возможностью переназначения цветов вы можете использовать эту функцию для удаления выбранных цветов из результата.

Вы можете использовать не более 1 024 цветов

Допуск

Единица измерения имеет дробное цветовое расстояние ARGB, где 1,0 — это расстояние от непрозрачного красного (#FFFF0000) до непрозрачного черного (#FF000000).

Максимальный допуск составляет 2,0, что соответствует расстоянию от прозрачного черного (#00000000) до непрозрачного белого (#FFFFFFFF).

Допуск по умолчанию — 2,0, поэтому по умолчанию обнаруженные цвета будут привязаны к ближайшему цвету палитры, даже если он находится далеко. Вы можете ограничить привязку отдельными цветами палитры, указав пользовательские допуски.

Если вы привыкли работать с цветами в диапазоне 0–255, просто разделите число на 255, чтобы получить дробное значение.


Число с плавающей запятой, от 0.0 до 100.0, по умолчанию: 0.125

Минимальная площадь фигуры в пикселях. Фигуры меньше указанного размера отбрасываются.


Перечисление, по умолчанию: svg

Формат выходного файла.

Параметры SVG:


Перечисление, по умолчанию: svg_1_1

Укажите атрибут версии SVG в теге SVG. Подробнее


Логическое значение, по умолчанию: false

Включать ли атрибуты размера изображения в тег SVG. Если значение true, как правило, зрители будут отображать SVG с фиксированным размером. Если значение false, зрители обычно позволяют масштабировать SVG в соответствии с доступным пространством. Подробнее


Логическое значение, по умолчанию: false

Если значение true, мы отключаем опции, которые Adobe Illustrator не может импортировать. Подробнее

Параметры DXF:


Перечисление, по умолчанию: lines_and_arcs

Считыватели DXF сильно различаются по своим возможностям. Эта опция позволяет вам ограничить вывод примитивами чертежа, которые фактически поддерживает ваш DXF-ридер. Подробнее

Параметры растрового изображения:

Применяется только тогда, когда output.file_format=png


Перечисление, по умолчанию: anti_aliased
Value Anti-Aliasing Mode
anti_aliased Цвета пикселей вдоль границы между фигурами смешиваются в соответствии с долей площади пикселя, покрываемой каждой фигурой.
aliased Пикселям присваивается цвет фигуры, содержащей геометрический центр пикселя.

Перечисление, по умолчанию: fill_shapes

Укажите, как вы хотите обвести или заполнить вывод. Есть небольшая разница между обводкой фигур и обводкой краев между ними. Пожалуйста, смотрите подробную документацию для объяснения


Перечисление, по умолчанию: cutouts

Определяет, размещаются ли фигуры в вырезах фигур ниже (cutouts) или располагаются друг над другом (stacked). Подробнее


Перечисление, по умолчанию: none
Value Shape grouping
none Группировка отсутствует
color По цвету взаимодействует с output.shape_stacking
parent По включению фигуры
layer По порядку отрисовки слоя
Подробнее

Логическое значение, по умолчанию: false

Сводит идентифицированные круги, эллипсы, прямоугольники, треугольники и звезды к обычным кривым. Подробнее

Кривые:


Логическое значение, по умолчанию: true

Разрешать ли квадратичные кривые Безье. Подробнее


Логическое значение, по умолчанию: true

Разрешать ли кубические кривые Безье. Подробнее


Логическое значение, по умолчанию: true

Разрешать ли дуги окружности. Подробнее


Логическое значение, по умолчанию: true

Разрешать ли эллиптические дуги. Подробнее


Число с плавающей запятой, от 0.001 до 1.0, по умолчанию: 0.1

Обычно мы стараемся заменять неразрешенные типы кривых разрешенными типами кривых. See the details for the precise fallback sequences.

Однако если вы отвергните достаточно много из них, нам придется аппроксимировать их отрезками прямых. Этот параметр определяет максимальное расстояние в пикселях между кривой и линиями, которые ее аппроксимируют. Подробнее

Заполнитель пробелов:


Логическое значение, по умолчанию: true

Обходить ли ошибки рендеринга белой линии, распространенные в векторных программах просмотра. Подробнее


Логическое значение, по умолчанию: false

Обрезать ли штрихи заполнителя пробелов. При значении output.shape_stacking=stacked, либо обрезайте, либо используйте немашсштабируемые штрихи. Подробнее


Логическое значение, по умолчанию: true

Использовать ли немасштабируемые штрихи заполнителя пробелов. При значении output.shape_stacking=stacked, либо обрезайте, либо используйте немашсштабируемые штрихи. Подробнее


Число с плавающей запятой, от 0.0 до 5.0, по умолчанию: 2.0

Ширина штрихов заполнителя пробелов. Подробнее

Стиль обводки, когда output.draw_style равен stroke_shapes или stroke_edges


Логическое значение, по умолчанию: true

Использовать ли немасштабируемый штрих. Подробнее


Логическое значение, по умолчанию: false

Следует ли использовать переопределяемый цвет или предполагаемый цвет фигуры. Подробнее


Формат: '#RRGGBB', например, #FF00FF, по умолчанию: #000000

Замещающий цвет. Подробнее


Число с плавающей запятой, от 0.0 до 5.0, по умолчанию: 1.0

Ширина штриха. Подробнее

Выходной размер:


Число с плавающей запятой, от 0.0 до 1000.0

Единый масштабный коэффициент. Если указан, имеет приоритет над output.size.width и output.size.height.


Число с плавающей запятой, от 0.0 до 1.0E12

Ширина в единицах, заданных output.size.unit. Если указана только ширина или высота, другая вычисляется автоматически, чтобы сохранить соотношение сторон.


Число с плавающей запятой, от 0.0 до 1.0E12

Высота в единицах, заданных output.size.unit. Если указана только ширина или высота, другая вычисляется автоматически, чтобы сохранить соотношение сторон.


Перечисление, по умолчанию: none

Единица измерения ширины и высоты. Из них pt, in, cm и mm — это физические единицы, а none и px — нефизические единицы. Эти различия взаимодействуют с output.size.input_dpi и output.size.output_dpi.


Перечисление, по умолчанию: preserve_inset

Значение Правило масштабирования
preserve_inset Масштабируйте равномерно, чтобы вписаться в более узкое измерение, избежать переполнения и иметь пустое пространство в другом измерении.
preserve_overflow Масштабируйте равномерно, чтобы вписаться в менее узкое измерение, перекрывая более узкое измерение.
stretch Неравномерное масштабирование для соответствия указанной ширине и высоте
Для любого варианта preserve положение в неограниченном измерении управляется output.size.align_x или output.size.align_y.


Число с плавающей запятой, от 0.0 до 1.0, по умолчанию: 0.5

Горизонтальное выравнивание для output.size.aspect_ratio = preserve_inset или preserve_overflow.

Значение Горизонтальное выравнивание
0.0 Выравнивание по левому краю
0.5 Центрирование по горизонтали
1.0 Выравнивание по правому краю
Может быть любым значением между 0.0 и 1.0.


Число с плавающей запятой, от 0.0 до 1.0, по умолчанию: 0.5

Выравнивание по вертикали для output.size.aspect_ratio = preserve_inset или preserve_overflow.

Значение Вертикальное выравнивание
0.0 Выравнивание по верхнему краю
0.5 Центрирование по вертикали
1.0 Выравнивание по нижнему краю
Может быть любым значением между 0.0 и 1.0.


Число с плавающей запятой, от 1.0 до 1000000.0

DPI входного изображения считывается из файла, если он доступен. Этот параметр позволяет переопределить это значение. Результирующее значение используется для вычисления физического размера входного изображения, которое используется для вычисления выходного размера, если для выходных данных указаны физические единицы, а не ширина или высота в явном виде.


Число с плавающей запятой, от 1.0 до 1000000.0

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

Скачать POST
https://api.vectorizer.ai/api/v1/download

Эта конечная точка позволяет вам:

  1. Скачивайте полный результат работы после вызова API предварительного просмотра.

    Мы включаем в ответ заголовок X-Receipt, чтобы впоследствии вы могли скачивать дополнительные выходные форматы по сниженной цене скачивания форматов.

  2. Загружайте несколько выходных форматов для одного и того же изображения и параметров обработки по сниженной цене и без необходимости векторизации их всех с нуля.

Параметры


Токен изображения, возвращаемый в заголовке X-Image-Token в более раннем вызове API векторизации, где policy.retention_days > 0.


Строка
По выбору

Квитанция, возвращенная в заголовке X-Receipt в предыдущем вызове API скачивания, где вы обновили предварительный просмотр до рабочего результата.

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


Перечисление, по умолчанию: svg

Формат выходного файла.

Параметры SVG:


Перечисление, по умолчанию: svg_1_1

Укажите атрибут версии SVG в теге SVG. Подробнее


Логическое значение, по умолчанию: false

Включать ли атрибуты размера изображения в тег SVG. Если значение true, как правило, зрители будут отображать SVG с фиксированным размером. Если значение false, зрители обычно позволяют масштабировать SVG в соответствии с доступным пространством. Подробнее


Логическое значение, по умолчанию: false

Если значение true, мы отключаем опции, которые Adobe Illustrator не может импортировать. Подробнее

Параметры DXF:


Перечисление, по умолчанию: lines_and_arcs

Считыватели DXF сильно различаются по своим возможностям. Эта опция позволяет вам ограничить вывод примитивами чертежа, которые фактически поддерживает ваш DXF-ридер. Подробнее

Параметры растрового изображения:

Применяется только тогда, когда output.file_format=png


Перечисление, по умолчанию: anti_aliased
Value Anti-Aliasing Mode
anti_aliased Цвета пикселей вдоль границы между фигурами смешиваются в соответствии с долей площади пикселя, покрываемой каждой фигурой.
aliased Пикселям присваивается цвет фигуры, содержащей геометрический центр пикселя.

Перечисление, по умолчанию: fill_shapes

Укажите, как вы хотите обвести или заполнить вывод. Есть небольшая разница между обводкой фигур и обводкой краев между ними. Пожалуйста, смотрите подробную документацию для объяснения


Перечисление, по умолчанию: cutouts

Определяет, размещаются ли фигуры в вырезах фигур ниже (cutouts) или располагаются друг над другом (stacked). Подробнее


Перечисление, по умолчанию: none
Value Shape grouping
none Группировка отсутствует
color По цвету взаимодействует с output.shape_stacking
parent По включению фигуры
layer По порядку отрисовки слоя
Подробнее

Логическое значение, по умолчанию: false

Сводит идентифицированные круги, эллипсы, прямоугольники, треугольники и звезды к обычным кривым. Подробнее

Кривые:


Логическое значение, по умолчанию: true

Разрешать ли квадратичные кривые Безье. Подробнее


Логическое значение, по умолчанию: true

Разрешать ли кубические кривые Безье. Подробнее


Логическое значение, по умолчанию: true

Разрешать ли дуги окружности. Подробнее


Логическое значение, по умолчанию: true

Разрешать ли эллиптические дуги. Подробнее


Число с плавающей запятой, от 0.001 до 1.0, по умолчанию: 0.1

Обычно мы стараемся заменять неразрешенные типы кривых разрешенными типами кривых. See the details for the precise fallback sequences.

Однако если вы отвергните достаточно много из них, нам придется аппроксимировать их отрезками прямых. Этот параметр определяет максимальное расстояние в пикселях между кривой и линиями, которые ее аппроксимируют. Подробнее

Заполнитель пробелов:


Логическое значение, по умолчанию: true

Обходить ли ошибки рендеринга белой линии, распространенные в векторных программах просмотра. Подробнее


Логическое значение, по умолчанию: false

Обрезать ли штрихи заполнителя пробелов. При значении output.shape_stacking=stacked, либо обрезайте, либо используйте немашсштабируемые штрихи. Подробнее


Логическое значение, по умолчанию: true

Использовать ли немасштабируемые штрихи заполнителя пробелов. При значении output.shape_stacking=stacked, либо обрезайте, либо используйте немашсштабируемые штрихи. Подробнее


Число с плавающей запятой, от 0.0 до 5.0, по умолчанию: 2.0

Ширина штрихов заполнителя пробелов. Подробнее

Стиль обводки, когда output.draw_style равен stroke_shapes или stroke_edges


Логическое значение, по умолчанию: true

Использовать ли немасштабируемый штрих. Подробнее


Логическое значение, по умолчанию: false

Следует ли использовать переопределяемый цвет или предполагаемый цвет фигуры. Подробнее


Формат: '#RRGGBB', например, #FF00FF, по умолчанию: #000000

Замещающий цвет. Подробнее


Число с плавающей запятой, от 0.0 до 5.0, по умолчанию: 1.0

Ширина штриха. Подробнее

Выходной размер:


Число с плавающей запятой, от 0.0 до 1000.0

Единый масштабный коэффициент. Если указан, имеет приоритет над output.size.width и output.size.height.


Число с плавающей запятой, от 0.0 до 1.0E12

Ширина в единицах, заданных output.size.unit. Если указана только ширина или высота, другая вычисляется автоматически, чтобы сохранить соотношение сторон.


Число с плавающей запятой, от 0.0 до 1.0E12

Высота в единицах, заданных output.size.unit. Если указана только ширина или высота, другая вычисляется автоматически, чтобы сохранить соотношение сторон.


Перечисление, по умолчанию: none

Единица измерения ширины и высоты. Из них pt, in, cm и mm — это физические единицы, а none и px — нефизические единицы. Эти различия взаимодействуют с output.size.input_dpi и output.size.output_dpi.


Перечисление, по умолчанию: preserve_inset

Значение Правило масштабирования
preserve_inset Масштабируйте равномерно, чтобы вписаться в более узкое измерение, избежать переполнения и иметь пустое пространство в другом измерении.
preserve_overflow Масштабируйте равномерно, чтобы вписаться в менее узкое измерение, перекрывая более узкое измерение.
stretch Неравномерное масштабирование для соответствия указанной ширине и высоте
Для любого варианта preserve положение в неограниченном измерении управляется output.size.align_x или output.size.align_y.


Число с плавающей запятой, от 0.0 до 1.0, по умолчанию: 0.5

Горизонтальное выравнивание для output.size.aspect_ratio = preserve_inset или preserve_overflow.

Значение Горизонтальное выравнивание
0.0 Выравнивание по левому краю
0.5 Центрирование по горизонтали
1.0 Выравнивание по правому краю
Может быть любым значением между 0.0 и 1.0.


Число с плавающей запятой, от 0.0 до 1.0, по умолчанию: 0.5

Выравнивание по вертикали для output.size.aspect_ratio = preserve_inset или preserve_overflow.

Значение Вертикальное выравнивание
0.0 Выравнивание по верхнему краю
0.5 Центрирование по вертикали
1.0 Выравнивание по нижнему краю
Может быть любым значением между 0.0 и 1.0.


Число с плавающей запятой, от 1.0 до 1000000.0

DPI входного изображения считывается из файла, если он доступен. Этот параметр позволяет переопределить это значение. Результирующее значение используется для вычисления физического размера входного изображения, которое используется для вычисления выходного размера, если для выходных данных указаны физические единицы, а не ширина или высота в явном виде.


Число с плавающей запятой, от 1.0 до 1000000.0

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

Удалить POST
https://api.vectorizer.ai/api/v1/delete

Векторизованные с помощью policy.retention_days > 0 изображения сохраняются в течение запрошенного периода времени, а после этого быстро удаляются автоматически.

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

Параметры


Токен изображения, возвращаемый в заголовке X-Image-Token в более раннем вызове API векторизации, где policy.retention_days > 0.

Атрибуты отклика

success

true Токен изображения был окончательно удален.

Пример отклика

{
  "success" : true
}

Статус учетной записи GET
https://api.vectorizer.ai/api/v1/account

Извлеките основную информацию о вашей учетной записи, такую как статус вашей подписки и количество оставшихся кредитов.

Параметры

Нет

Атрибуты отклика

subscriptionPlan

План, на который вы в настоящее время подписаны, или 'отсутствует'.

subscriptionState

Состояние вашей текущей подписки ('активна' или 'просрочена') или 'закончилась', если вы не подписаны.

credits

Количество кредитов API на вашей учетной записи. Если вы в настоящее время не подписаны или подписаны не на план API, то 0. Может быть дробным, поэтому обязательно анализируйте его как Double.

Имя пользователя = идентификатор API, пароль = секрет API

cURL

$ curl "https://api.vectorizer.ai/api/v1/account" \
 -u vkyc67kqa27yidd:[secret]

Пример отклика

{
  "subscriptionPlan" : "none",
  "subscriptionState" : "ended",
  "credits" : 0
}

Журнал изменений API

ДатаИзменить
4 нояб. 2024 г. Добавлен processing.shapes.min_area_px.
1 окт. 2024 г. Добавлен чат-бот на основе ИИ для упрощения интеграции с API.
23 сент. 2024 г. Значительно расширен API для поддержки большего количества режимов работы. Добавлены токены изображений, квитанции, заголовки оплаты за вызов, а также конечные точки скачивания и удаления.
11 июн. 2024 г. Добавили processing.palette
4 мар. 2024 г. Добавлен раздел про тайм-ауты.
24 янв. 2024 г. Добавлена конечная точка состояния учетной записи. Добавлены недавние ошибки API на страницу учетной записи. Добавлен список всех ответов об ошибках API.
16 янв. 2024 г. Задокументирован объект ошибки JSON.
3 окт. 2023 г. Уточнено, что output.gap_filler.enabled=true приводит к большему количеству цветов в результате, чем запрошено в processing.max_colors.
20 сент. 2023 г. Добавили mode
1 авг. 2023 г. Добавлена полнофункциональная группа параметров размера вывода со следующими параметрами: output.size.scale, output.size.width, output.size.height, output.size.unit, output.size.aspect_ratio, output.size.align_x, output.size.align_y, output.size.input_dpi и output.size.output_dpi. Добавлена группа параметров вывода растрового изображения с одним параметром: output.bitmap.anti_aliasing_mode.
7 июн. 2023 г. Добавили processing.max_colors
31 мая 2023 г. Значительно расширены параметры API. Обновлена конечная точка API.
10 мар. 2023 г. Изначальный выпуск.
Получить ключ API