API de vetorização de imagens

O Vectorizer.AI oferece uma API completa para rastreamento de bitmap. A API rastreia pixels para vetores com fidelidade inigualável, de forma totalmente automática.

Obter a chave de API

Guia de início rápido

Entre com uma imagem bitmap e obtenha como retorno o resultado vetorizado:

$ curl https://pt.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://pt.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://pt.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://pt.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://pt.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://pt.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://pt.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://pt.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://pt.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://pt.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://pt.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://pt.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://pt.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://pt.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

Chatbot sobre a API

Nós criamos um CHATGPT personalizado para ajudar você na integração com a API. Ele pode responder perguntar sobre a documentação da API e fornecer um exemplo de código adaptado para seu caso de uso específico.

Converse com o Chatbot sobre a API do Vectorizer.AI

O chatbot está em versão beta e comete erros. Confira as respostas e peça a ele que revise o código para solucionar erros e omissões.

Como utilizar esta API

A API foi criada para ser aplicada em casos de uso muito variados. Este são alguns dos comuns:

Imagem individual Envie um bitmap, receba um resultado vetorial. Pronto!

Utilize o endpoint Vectorize e os exemplos de código acima.

Primeiro uma prévia Mostre um resultado prévio para o seu cliente potencial antes que ele faça a compra.

Se você precisa fazer muitas chamadas de API para fazer uma venda, é possível usar as prévias, mais baratas, até converter o cliente.

  1. Utilize o endpoint Vectorize com mode=preview e policy.retention_days > 0 para receber uma prévia, mantendo o token da imagem retornado no cabeçalho de resposta X-Image-Token.

  2. Após a conversão, para fazer download do resultado completo, utilize o endpoint Download com o token da imagem.

  3. Opcional: se precisar do resultado em mais formatos (por exemplo, PNG, PDF, etc), mantenha o recibo retornado no cabeçalho de resposta do download X-Receipt. Depois, utilize o endpoint Download com o token da imagem e o recibo para fazer download nos outros formatos.

Múltiplos formatos Digamos que você precise do resultados nos formatos PNG e SVG.

  1. Utilize o endpoint Vectorize com policy.retention_days > 0 para obter o primeiro resultado e mantenha o token da imagem retornado no cabeçalho de resposta X-Image-Token.

  2. Utilize o endpoint Download com o token da imagem para fazer download de outros formatos.

Múltiplas opções Você quer processar cada imagem com múltiplas opções de processamento.

  1. Utilize o endpoint Vectorize com policy.retention_days > 0 para obter o primeiro resultado e mantenha o token da imagem retornado no cabeçalho de resposta X-Image-Token.

  2. Utilize o endpoint Vectorize com o token da imagem para fazer iterações com as outras opções de processamento que precisa.

  3. Como alternativa, você pode processar cada imagem individualmente, sem se preocupar com o token da imagem. O token da imagem economiza um pouco de banda e latência.

Preços

AçãoCréditosDescrição
Teste0.00

Você pode fazer testes e integração com a API gratuitamente. A assinatura não é necessária.

Utilize mode=test e mode=test_preview durante o desenvolvimento.

Você pode avaliar a qualidade do resultado usando o app interativo da Web na página inicial do site.

Prévia0.20

Nós oferecemos a visualização de uma prévia dos resultados, que você pode mostrar ao seu usuário final antes que ele faça a compra.

As prévias são imagens PNG quatro vezes maiores do que a imagem fornecida por você e trazem uma marca d'água discreta.

Utilize mode=preview para obter uma prévia do resultado.

Vetorização1.00 Vetorize uma imagem em bitmap para uma imagem vetorial.
Visão prévia do upgrade0.90 Faça download do resultado de produção após a chamada de API da prévia. É mais barato do que vetorizar novamente desde o início.
Formato de download0.10 Faça download do resultado em outros formatos, como SVG, PNG, PDF, etc. É mais barato do que vetorizar novamente desde o início.
Dia de armazenamento0.01 Preço por dia para armazenar um resultado gratuitamente após o primeiro dia.

Consulta os planos de assinatura na página de preços.

Autenticação e segurança

A API usa autenticação padrão HTTP básica de acesso. Todas as requisições para a API devem ser feitas em HTTPS e incluir suas credenciais da API, tendo API Id como usuário e API Secret como senha.

Sua biblioteca de cliente HTTP deve aceitar Indicação de Nome do Servidor (SNI) para fazer requisições corretamente. Se você estiver recebendo erros de handshake estranhos, provavelmente esta é a causa.

Limitação de velocidade

O uso da API tem limite de taxa com margens generosas e não há tetos definitivos.

Durante as operações conduzidas pelo usuário final, é improvável que você tenha limitações de velocidade, pois o uso é adaptado pelo sistema de forma transparente.

No entanto, para trabalhos em lote, recomendamos começar com no máximo cinco ramificações e adicionar uma nova ramificação a cada cinco minutos, até atingir o nível de paralelismo desejado. Se você precisa de mais de 100 ramificações simultâneas, fale conosco antes de começar.

Se enviar requisições em excesso, você começará a receber respostas do tipo 429 Too Many Requests. Se isso ocorrer, você deverá aplicar um algoritmo de back off linear: na primeira resposta desse tipo, aguarde 5 segundos até reenviar a requisição seguinte. Na segunda resposta 429 consecutiva, aguarde 2 x 5=10 segundos até reenviar a requisição seguinte. Na terceira, aguarde 3 x 5=15 segundos, e assim por diante.

Você poderá reinicializar o contador de back off após o processamento satisfatório de uma requisição, e o back off deve ser aplicado ramificação a ramificação, ou seja, as ramificações devem operar independentemente.

Limite de tempo de inatividade

Em geral, as solicitações de API são executadas em segundos, mas é possível que o tempo de processamento seja mais longo durante picos de carga.

Para assegurar que sua biblioteca de cliente não encerre solicitações de API prematuramente, ela deveria ser configurada com um limite de tempo de inatividade mínimo de 180 segundos

Erro JSON

Usamos status HTTP convencionais para indicar êxito ou falha de uma requisição de API e incluir informações importantes sobre erro no objeto JSON de erro retornado.

Tentamos sempre retornar um objeto JSON de erro com qualquer requisição problemática. Teoricamente, no entanto, sempre é possível haver falhas internas no servidor que resultam em uma resposta de erro não JSON.

Atributos

statusO status HTTP da resposta, repetido aqui para auxílio na depuração de erros.
codecódigo interno de erro Vectorizer.AI
messageMensagem de erro inteligível, para ajudar na depuração.

Se o status HTTP da sua requisição for 200, não haverá retorno de Objeto JSON de erro e você pode supor com segurança que a requisição foi, de forma geral, exitosa.

Algumas bibliotecas de cliente HTTP suscitam exceções para status HTTP no intervalo 400-599. Você deverá obter essas exceções e tratá-las adequadamente.

HTTP StatusSignificado
200-299

Êxito

400-499

Há um problema com as informações fornecidas na requisição, por exemplo, a falta de um parâmetro. Analise a mensagem de erro para resolver como solucioná-lo.

500-599

Houve um erro interno no Vectorizer.AI. Aguarde alguns momentos e tente novamente. Se o problema persistir, envie-nos um e-mail.

Exemplo de resposta de erro

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

Os erros de API recentes estão relacionados na página da sua conta para facilitar o debugging.

Também há uma lista de todas as respostas de erro retornadas pela API.

Cabeçalhos de resposta

Estes são os cabeçalhos de resposta utilizados:

CabeçalhoDescrição
X-Image-Token

Retornado quando a solicitação de vetorização tem policy.retention_days > 0. Pode ser usado para:

  1. Fazer download do resultado de produção após uma chamada de API de prévia, com um valor inferior à vetorização desde o início.

  2. Fazer download do resultado em outros formatos (por exemplo SVG, PNG, PDF, etc.), com um valor inferior à vetorização desde o início.

  3. Vetorizar novamente a mesma imagem com opções de processamento diferentes.

X-Receipt

Retornado no download de um resultado de produção usando o token de uma prévia da imagem. Pode ser usado para fazer download de outros formatos do resultado (por exemplo, SVG, PNG, PDF, etc.) pelo custo de download de formato, em vez do custo de upgrade da prévia da imagem.

X-Credits-Calculated

Retornado com as solicitações de teste para mostrar o custo que seria incorrido de esta fosse uma solicitação normal.

X-Credits-Charged

Retornado com todas as solicitações para mostrar o custo incorrido. É sempre 0 nas solicitações de teste.

Vetorização POST
https://api.vectorizer.ai/api/v1/vectorize

Para vetorizar uma imagem, basta fazer um upload de arquivo HTTP POST padrão. Lembre-se de que o Content-Type deve ser multipart/form-data no upload de arquivos binários.

A tabela abaixo lista todos os parâmetros da API para que você possa testar agora. Cada parâmetro tem uma descrição sucinta, mas você pode consultar mais detalhes na Documentação de opções de saída.

Parâmetros

A imagem de entrada de ser fornecida como:


Binário

Um arquivo binário.


Cadeia de caracteres

Uma cadeia de caracteres codificada como base 64. A cadeia de caracteres pode ter o comprimento máximo de 1 megabyte.


Cadeia de caracteres

Um URL para buscar e processar.


Um token da imagem, retornado no cabeçalho X-Image-Token em uma chamada anterior da API de vetorização em que policy.retention_days > 0.

O arquivo deve ser .bmp, .gif, .jpeg, .png ou tiff.

O tamanho máximo de imagem para upload (= largura × altura) é 33.554.432 pixels, que é reduzido para input.max_pixels.


Enum, padrão: production
Value Processing Mode Credits
production

Este modo é usado em produção e trabalha com todos os parâmetros.

1.00
preview

Este modo é usado quando você quer mostrar ao seu usuário final uma prévia antes que ele faça a compra.

Ele produz um resultado PNG quatro vezes maior, incorpora uma marca d'água discreta e ignora os parâmetros contraditórios.

0.20
test, test_preview

Esses modos foram criados para que os desenvolvedores os utilizam na integração ao serviço. Todos os parâmetros são usados, mas incorpora uma marca d'água substancial.

Os resultados dos testes são gratuitos e não exigem uma assinatura ativa, para que você não incorra em custos de integração ao serviço.

O cabeçalho X-Credits-Calculated está incluído na resposta para confirmar qual seria a cobrança em chamadas de produção correspondentes.

Gratuito

Inteiro, de 100 a 3145828, padrão: 2097252

O tamanho máximo da imagem de entrada (= largura × altura em pixels). Imagens maiores serão reduzidas para esse tamanho antes do processamento.


Inteiro, de 0 a 30, padrão: 0

A quantidade de dias de retenção da imagem de origem e do resultado. Quando você especificar policy.retention_days > 0, o cabeçalho X-Image-Token será incluído na resposta.

Isso pode ser utilizado principalmente de três formas:

  1. Após fazer uma chamada de API de prévia, você poderá depois fazer o download do resultado rapidamente e com custo menor.

  2. Após vetorizar uma imagem, é possível fazer download do resultado em vários formatos da mesma imagem e opções de processamento, sem precisar revetorizá-la desde o início. Isso economiza substancialmente os créditos e a latência.

  3. Quando você quer revetorizar a mesma imagem com opções de processamento diferentes. Isso permite reduzir latência da chamada e economizar na banda.

O primeiro dia de armazenamento é gratuito. Depois, há uma cobrança de 0,01crédito por dia.

Veja também o endpoint Download.


Inteiro, de 0 a 256, padrão: 0

A quantidade máxima de cores a usar no resultado.

0 significa ilimitada. 1 e 2 significam duas cores, por exemplo, branco e preto. N>=2 significa quantidade de cores específica.

Note que se output.gap_filler.enabled=true (o padrão), o resultado também conterá mesclas das cores selecionadas. Desative o preenchimento de lacunas para obter um resultado que inclua apenas as cores selecionadas.


Formato '[color][-> remapped][~ tolerance];'
#00000000;
#FFFFFF ~ 0.1;
#0000FF -> #00FF00;
#FF0000 -> #00FF00 ~ 0.1;

Padrão:   (vazio)

Esse mecanismo potente e flexível permite controlar as cores no resultado.

As cores detectadas na imagem que estiverem dentro da tolerância de alguma das cores na paleta serão ajustadas para a cor mais próxima na paleta e modificadas se tal cor na paleta tiver uma modificação especificada. As cores que não tiverem correspondente não serão alteradas.

Exemplos

Para ajustar as cores detectadas para o vermelho, verde e azul mais próximo, use:

#FF0000; 
#00FF00; 
#0000FF;

Para limpar as cores detectadas que estão próximas ao vermelho, verde e azul, mas manter as outras inalteradas, use:

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

Para tornar as cores detectadas que estão próximas ao vermelho para verde e manter todo o resto inalterado, use:

#FF0000 -> #00FF00 ~ 0.02;

Para ajustar qualquer coisa próxima a vermelho, verde e azul para essas cores, mas ajustar todo o resto para preto transparente e, assim, removê-las do resultado, use:

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

Cores

As cores são especificadas usando a sintaxe de cor CSS básica. Para cores (parcialmente) transparentes, recomendamos usar #RRGGBBAA. Para cores opacas, recomendamos usar #RRGGBB.

Cores totalmente transparentes são omitidas no resultado. Juntamente com o recurso de modificação de cor, é possível usar o que remove do resultado certas cores selecionadas.

É possível usar no máximo 1.024 cores.

Tolerância

A unidade está em fração da distância de cor ARGB, onde 1,0 é a distância do vermelho opaco (#FFFF0000) para o preto opaco (#FF000000).

A tolerância máxima é 2,0, que é a distância do preto transparente (#00000000) para o branco opaco (#FFFFFFFF).

A tolerância padrão é 2,0. Portanto, por padrão, as cores detectadas serão ajustadas para a cor mais próxima na paleta, mesmo que esta esteja longe. Para restringir a adaptação a cores individuais na paleta, você pode especificar tolerâncias personalizadas.

Se você está acostumado a trabalhar com cores no intervalo 0-255, basta dividir por 255 para chegar ao valor fracionado.


Flutuante, de 0.0 a 100.0, padrão: 0.125

A área mínima de uma forma, em pixels. Formas menores serão descartadas.


Enum, padrão: svg

Formato do arquivo de saída.

Opções SVG:


Enum, padrão: svg_1_1

Especificar o atributo da versão SVG na tag SVG. Detalhes


Booleano, padrão: false

Definir se os atributos de tamanho da imagem serão incluídos na tag SVG. Quando true, de forma geral, os visualizadores apresentarão o SVG em um tamanho fixo. Quando false, de forma geral, os visualizadores apresentarão o SVG ajustado ao espaço disponível. Detalhes


Booleano, padrão: false

Quando true, as opções que o Adobe Illustrator não consegue importar são desativadas. Detalhes

Opções DFX:


Enum, padrão: lines_and_arcs

As habilidades dos diversos leitores DXF variam enormemente. Esta opção permite a você restringir a saída às primitivas de desenho compatíveis com o seu leitor DXF. Detalhes

Opções de Bitmap:

Aplica-se somente quando output.file_format=png


Enum, padrão: anti_aliased
Value Anti-Aliasing Mode
anti_aliased Os pixels ao longo da borda entre formas têm as cores mescladas de acordo com a fração da área do pixel coberta por cada forma.
aliased As cores da forma que contém o centro geométrico do pixel são atribuídas aos pixels.

Enum, padrão: fill_shapes

Especifique como você quer que a saída seja traçada ou preenchida. Há uma diferença sutil entre o traçado das formas e o traçado das bordas entre elas. Consulte a documentação detalhada para uma explicação completa.


Enum, padrão: cutouts

Determina se as formas são postas em recortes nas formas embaixo delas (cutouts) ou se são empilhadas por sobreposição (stacked). Detalhes


Enum, padrão: none
Value Shape grouping
none Sem agrupamento
color Por cor, interage com output.shape_stacking
parent Por forma que contém outras
layer Por ordem e camadas de desenho
Detalhes

Booleano, padrão: false

Nivela os círculos, elipses, retângulos, triângulos e estrelas a curvas ordinárias. Detalhes

Curvas:


Booleano, padrão: true

Se curvas de Bézier quadráticas são permitidas. Detalhes


Booleano, padrão: true

Se curvas de Bézier cúbicas são permitidas. Detalhes


Booleano, padrão: true

Se arcos circulares são permitidos. Detalhes


Booleano, padrão: true

Se arcos elípticos são permitidos. Detalhes


Flutuante, de 0.001 a 1.0, padrão: 0.1

Em geral, tentamos substituir tipos de curvas não permitidos por tipos de curvas permitidos. See the details for the precise fallback sequences.

No entanto, se você não permitir várias delas, precisaremos aproximá-las com segmentos de linha. Este parâmetro especifica a distância máxima em pixels entre uma curva e as linhas que a aproximam. Detalhes

Preenchimento de lacunas:


Booleano, padrão: true

Se a linha branca provocada por bugs comuns de renderização nos visualizadores de vetores devem ser trabalhadas. Detalhes


Booleano, padrão: false

Se os traços de preenchimento de lacunas devem ser recortados. Quando output.shape_stacking=stacked, pode recortar ou usar traços não escaláveis. Detalhes


Booleano, padrão: true

Se traços não escaláveis de preenchimento de lacunas podem ser usados. Quando output.shape_stacking=stacked, pode recortar ou usar traços não escaláveis. Detalhes


Flutuante, de 0.0 a 5.0, padrão: 2.0

Largura dos traços de preenchimento de lacunas. Detalhes

Estilo de traço quando output.draw_style é stroke_shapes ou stroke_edges


Booleano, padrão: true

Se um traço não escalável pode ser usado. Detalhes


Booleano, padrão: false

Se deve ser usada uma cor substituta ou a cor estimada da forma . Detalhes


Formato: '#RRGGBB', por exemplo, #FF00FF, padrão: #000000

A cor substituta. Detalhes


Flutuante, de 0.0 a 5.0, padrão: 1.0

Largura do traço. Detalhes

Tamanho da saída:


Flutuante, de 0.0 a 1000.0

Fator de escala uniforme. Se especificado, tem precedência sobre output.size.width e output.size.height.


Flutuante, de 0.0 a 1.0E12

Largura, em unidades especificadas por output.size.unit. Se apenas a largura ou altura for especificada, a outra dimensão será calculada automaticamente de forma a preservar a razão de aspecto.


Flutuante, de 0.0 a 1.0E12

Altura, em unidades especificadas por output.size.unit. Se apenas a largura ou altura for especificada, a outra dimensão será calculada automaticamente de forma a preservar a razão de aspecto.


Enum, padrão: none

A unidade de medida para altura e largura. Dentre essas, pt, in, cm e mm são unidades físicas. none e px são unidades não físicas. Essas distinções interagem com output.size.input_dpi e output.size.output_dpi.


Enum, padrão: preserve_inset

Valor Regra de escala
preserve_inset Escala uniformemente para ajustar-se à dimensão mais estreita, de forma que não haja transbordamento, mas haja espaço vazio na outra dimensão
preserve_overflow Escala uniformemente para ajustar-se à dimensão menos estreita, com transbordamento da dimensão mais estreita
stretch Escala não uniformemente para ajustar-se à altura e largura especificadas
Para ambas as opções de preserve, a posição na dimensão ilimitada é controlada por output.size.align_x ou output.size.align_y.


Flutuante, de 0.0 a 1.0, padrão: 0.5

Alinhamento horizontal para output.size.aspect_ratio = preserve_inset ou preserve_overflow.

Valor Alinhamento horizontal
0.0 Alinhamento à esquerda
0.5 Centralizado horizontalmente
1.0 Alinhamento à direita
Qualquer valor entre 0.0 e 1.0 é permitido.


Flutuante, de 0.0 a 1.0, padrão: 0.5

Alinhamento vertical para output.size.aspect_ratio = preserve_inset ou preserve_overflow.

Valor Alinhamento vertical
0.0 Alinhado acima
0.5 Centralizado verticalmente
1.0 Alinhado abaixo
Qualquer valor entre 0.0 e 1.0 é permitido.


Flutuante, de 1.0 a 1000000.0

O DPI da imagem de entrada é lido do arquivo, se disponível. Este parâmetro permite substituir tal valor. O valor resultante é usado para calcular o tamanho físico da imagem de entrada, que é usado para calcular o tamanho da saída se forem especificadas as unidades físicas para ela, mas sem escolha explícita de altura e largura.


Flutuante, de 1.0 a 1000000.0

O valor de DPI da imagem de saída. Ele é usado para calcular o tamanho de pixel da saída bitmap quando as unidades físicas são especificadas.

Download POST
https://api.vectorizer.ai/api/v1/download

Este endpoint permite:

  1. Fazer download do resultado de produção completo depois de fazer uma chamada de API de prévia.

    O cabeçalho X-Receipt é incluído na resposta, para que, depois, você possa fazer download de outros formatos de resultado ao preço reduzido do formato de download.

  2. Fazer download de vários formatos de resultado para a mesma imagem e opções de processamento ao preço reduzido de formato de download, sem precisar revetorizar desde o início.

Parâmetros


Um token da imagem, retornado no cabeçalho X-Image-Token em uma chamada anterior da API de vetorização em que policy.retention_days > 0.


Cadeia de caracteres
Opcional

Um recibo, retornado no cabeçalho X-Receipt numa chamada anterior de download da API em que você fez upgrade da prévia para o resultado de produção.

Para receber o preço reduzido de download de formato, você deve incluir o recibo ao enviar o token da imagem prévia.


Enum, padrão: svg

Formato do arquivo de saída.

Opções SVG:


Enum, padrão: svg_1_1

Especificar o atributo da versão SVG na tag SVG. Detalhes


Booleano, padrão: false

Definir se os atributos de tamanho da imagem serão incluídos na tag SVG. Quando true, de forma geral, os visualizadores apresentarão o SVG em um tamanho fixo. Quando false, de forma geral, os visualizadores apresentarão o SVG ajustado ao espaço disponível. Detalhes


Booleano, padrão: false

Quando true, as opções que o Adobe Illustrator não consegue importar são desativadas. Detalhes

Opções DFX:


Enum, padrão: lines_and_arcs

As habilidades dos diversos leitores DXF variam enormemente. Esta opção permite a você restringir a saída às primitivas de desenho compatíveis com o seu leitor DXF. Detalhes

Opções de Bitmap:

Aplica-se somente quando output.file_format=png


Enum, padrão: anti_aliased
Value Anti-Aliasing Mode
anti_aliased Os pixels ao longo da borda entre formas têm as cores mescladas de acordo com a fração da área do pixel coberta por cada forma.
aliased As cores da forma que contém o centro geométrico do pixel são atribuídas aos pixels.

Enum, padrão: fill_shapes

Especifique como você quer que a saída seja traçada ou preenchida. Há uma diferença sutil entre o traçado das formas e o traçado das bordas entre elas. Consulte a documentação detalhada para uma explicação completa.


Enum, padrão: cutouts

Determina se as formas são postas em recortes nas formas embaixo delas (cutouts) ou se são empilhadas por sobreposição (stacked). Detalhes


Enum, padrão: none
Value Shape grouping
none Sem agrupamento
color Por cor, interage com output.shape_stacking
parent Por forma que contém outras
layer Por ordem e camadas de desenho
Detalhes

Booleano, padrão: false

Nivela os círculos, elipses, retângulos, triângulos e estrelas a curvas ordinárias. Detalhes

Curvas:


Booleano, padrão: true

Se curvas de Bézier quadráticas são permitidas. Detalhes


Booleano, padrão: true

Se curvas de Bézier cúbicas são permitidas. Detalhes


Booleano, padrão: true

Se arcos circulares são permitidos. Detalhes


Booleano, padrão: true

Se arcos elípticos são permitidos. Detalhes


Flutuante, de 0.001 a 1.0, padrão: 0.1

Em geral, tentamos substituir tipos de curvas não permitidos por tipos de curvas permitidos. See the details for the precise fallback sequences.

No entanto, se você não permitir várias delas, precisaremos aproximá-las com segmentos de linha. Este parâmetro especifica a distância máxima em pixels entre uma curva e as linhas que a aproximam. Detalhes

Preenchimento de lacunas:


Booleano, padrão: true

Se a linha branca provocada por bugs comuns de renderização nos visualizadores de vetores devem ser trabalhadas. Detalhes


Booleano, padrão: false

Se os traços de preenchimento de lacunas devem ser recortados. Quando output.shape_stacking=stacked, pode recortar ou usar traços não escaláveis. Detalhes


Booleano, padrão: true

Se traços não escaláveis de preenchimento de lacunas podem ser usados. Quando output.shape_stacking=stacked, pode recortar ou usar traços não escaláveis. Detalhes


Flutuante, de 0.0 a 5.0, padrão: 2.0

Largura dos traços de preenchimento de lacunas. Detalhes

Estilo de traço quando output.draw_style é stroke_shapes ou stroke_edges


Booleano, padrão: true

Se um traço não escalável pode ser usado. Detalhes


Booleano, padrão: false

Se deve ser usada uma cor substituta ou a cor estimada da forma . Detalhes


Formato: '#RRGGBB', por exemplo, #FF00FF, padrão: #000000

A cor substituta. Detalhes


Flutuante, de 0.0 a 5.0, padrão: 1.0

Largura do traço. Detalhes

Tamanho da saída:


Flutuante, de 0.0 a 1000.0

Fator de escala uniforme. Se especificado, tem precedência sobre output.size.width e output.size.height.


Flutuante, de 0.0 a 1.0E12

Largura, em unidades especificadas por output.size.unit. Se apenas a largura ou altura for especificada, a outra dimensão será calculada automaticamente de forma a preservar a razão de aspecto.


Flutuante, de 0.0 a 1.0E12

Altura, em unidades especificadas por output.size.unit. Se apenas a largura ou altura for especificada, a outra dimensão será calculada automaticamente de forma a preservar a razão de aspecto.


Enum, padrão: none

A unidade de medida para altura e largura. Dentre essas, pt, in, cm e mm são unidades físicas. none e px são unidades não físicas. Essas distinções interagem com output.size.input_dpi e output.size.output_dpi.


Enum, padrão: preserve_inset

Valor Regra de escala
preserve_inset Escala uniformemente para ajustar-se à dimensão mais estreita, de forma que não haja transbordamento, mas haja espaço vazio na outra dimensão
preserve_overflow Escala uniformemente para ajustar-se à dimensão menos estreita, com transbordamento da dimensão mais estreita
stretch Escala não uniformemente para ajustar-se à altura e largura especificadas
Para ambas as opções de preserve, a posição na dimensão ilimitada é controlada por output.size.align_x ou output.size.align_y.


Flutuante, de 0.0 a 1.0, padrão: 0.5

Alinhamento horizontal para output.size.aspect_ratio = preserve_inset ou preserve_overflow.

Valor Alinhamento horizontal
0.0 Alinhamento à esquerda
0.5 Centralizado horizontalmente
1.0 Alinhamento à direita
Qualquer valor entre 0.0 e 1.0 é permitido.


Flutuante, de 0.0 a 1.0, padrão: 0.5

Alinhamento vertical para output.size.aspect_ratio = preserve_inset ou preserve_overflow.

Valor Alinhamento vertical
0.0 Alinhado acima
0.5 Centralizado verticalmente
1.0 Alinhado abaixo
Qualquer valor entre 0.0 e 1.0 é permitido.


Flutuante, de 1.0 a 1000000.0

O DPI da imagem de entrada é lido do arquivo, se disponível. Este parâmetro permite substituir tal valor. O valor resultante é usado para calcular o tamanho físico da imagem de entrada, que é usado para calcular o tamanho da saída se forem especificadas as unidades físicas para ela, mas sem escolha explícita de altura e largura.


Flutuante, de 1.0 a 1000000.0

O valor de DPI da imagem de saída. Ele é usado para calcular o tamanho de pixel da saída bitmap quando as unidades físicas são especificadas.

Excluir POST
https://api.vectorizer.ai/api/v1/delete

As imagens vetorizadas com policy.retention_days > 0 são armazenadas pelo período solicitado e excluídas automaticamente pouco depois.

De forma geral, não há necessidade de chamar este endpoint. Ele é oferecido para que você possa excluir imagens antes que o período de retenção termine. A exclusão antecipada da imagem não proporcionar um reembolso dos dias de armazenamento remanescentes.

Parâmetros


Um token da imagem, retornado no cabeçalho X-Image-Token em uma chamada anterior da API de vetorização em que policy.retention_days > 0.

Atributos de resposta

success

true O token da imagem foi excluído.

Exemplo de resposta

{
  "success" : true
}

Status da conta GET
https://api.vectorizer.ai/api/v1/account

Obtenha informações básicas sobre a sua conta, como o status da assinatura e o número de créditos remanescentes.

Parâmetros

Nenhum

Atributos de resposta

subscriptionPlan

O seu plano de assinatura atual ou "nenhum".

subscriptionState

O status do seu plano de assinatura atual ("ativo" ou "atrasado") ou, se não houver assinatura, "terminado".

credits

A quantidade de créditos da API remanescente em sua conta. 0 se não tiver assinatura ou se a assinatura for de uma plano sem API. Pode ser fracionário, portanto aplique parse como Double.

Nome do usuário = Id da API, Senha = Segredo da API

cURL

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

Exemplo de resposta

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

Histórico de alterações da API

DataAlterar
4 de nov. de 2024 Foi adicionado processing.shapes.min_area_px.
1 de out. de 2024 Foi adicionado o chatbot para auxiliar na integração com a API.
23 de set. de 2024 Expandiu substancialmente a API para possibilitar mais modos de operação. Adicionou tokens de imagem, recibos, cabeçalhos de cobrança por chamada, bem como endpoints de download e exclusão.
11 de jun. de 2024 Foi adicionado processing.palette
4 de mar. de 2024 Seção sobre limite de tempo foi adicionada.
24 de jan. de 2024 O endpoint Status da Conta foi adicionado. Os erros recentes de API foram adicionados à página da conta. A lista de todas as respostas de erro da API foi adicionada.
16 de jan. de 2024 Documentou o objeto JSON de erro.
3 de out. de 2023 Esclarecimento de que output.gap_filler.enabled=true resulta em mais cores do que o solicitado em processing.max_colors.
20 de set. de 2023 Foi adicionado mode
1 de ago. de 2023 Grupo completo de opções do tamanho da saída foi adicionado com as seguintes opções: 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 e output.size.output_dpi. Grupo de opções de saída bitmap foi adicionado com uma opção: output.bitmap.anti_aliasing_mode.
7 de jun. de 2023 Foi adicionado processing.max_colors
31 de mai. de 2023 Grande expansão dos parâmetro da API. Atualização do endpoint da API.
10 de mar. de 2023 Liberação inicial.
Obter a chave de API