Interfejs API wektoryzacji obrazu

Vectorizer.AI oferuje pełnowartościowy interfejs API do trasowania bitmap. API w pełni automatycznie i z najwyższą wiernością trasuje piksele do postaci wektorowej.

Uzyskaj klucz interfejsu API

Szybki start

Użyj POST wobec obrazu bitmapowego i uzyskaj zwektoryzowany rezultat:

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

Interfejs API Chatbot

Stworzyliśmy niestandardowy ChatGPT, który może pomóc w integracji API. Może odpowiadać na pytania dotyczące dokumentacji interfejsu API i dostarczyć przykładowy kod w preferowanym języku dostosowany do Twojego przypadku użycia.

Chat with the Vectorizer.AI API Chatbot

Chatbot jest w wersji beta i popełnia błędy. Sprawdź dokładnie odpowiedzi i poproś go o zmianę kodu, aby naprawić błędy i pominięcia.

Jak korzystać z tego interfejsu API

Interfejs API jest przeznaczony do obsługi wielu różnych przypadków użycia. Oto kilka typowych:

Pojedynczy obraz Prześlij mapę bitową, uzyskaj wynik wektorowy, gotowe

Użyj punktu końcowego Vectorize i przykładów kodu powyżej.

Najpierw podgląd Pokaż podgląd potencjalnemu klientowi przed zakupem

Jeśli chcesz wykonać wiele połączeń API, aby dokonać sprzedaży, możesz korzystać z podglądów o niższych kosztach, dopóki faktycznie nie przekonwertujesz klienta.

  1. Use the Vectorize endpoint with mode=preview and policy.retention_days > 0 to get the preview, making sure to retain the Image Token returned in the X-Image-Token response header.

  2. Po konwersji użyj punktu końcowego Pobierz z tokenem obrazu, aby pobrać pełny wynik.

  3. Optional: if you need additional result formats (e.g. PNG, PDF, etc), be sure to retain the Receipt returned in the X-Receipt download response header. Następnie użyj punktu końcowego Pobierz z tokenem obrazu i pokwitowaniem, aby pobrać pozostałe formaty.

Wieloformatowy Potrzebne są np. zarówno wyniki PNG, jak i SVG

  1. Use the Vectorize endpoint with policy.retention_days > 0 to get the first result, making sure to retain the Image Token returned in the X-Image-Token response header.

  2. Użyj punktu końcowego Pobierz z tokenem obrazu, aby pobrać inne formaty.

Multi-Opcja Musisz przetworzyć każdy obraz z wieloma opcjami przetwarzania

  1. Use the Vectorize endpoint with policy.retention_days > 0 to get the first result, making sure to retain the Image Token returned in the X-Image-Token response header.

  2. Użyj punktu końcowego Vectorize z tokenem obrazu, aby wykonać iterację pozostałych opcji przetwarzania, których potrzebujesz.

  3. Alternatywnie możesz przetwarzać każdy obraz indywidualnie i nie martwić się o Token obrazu. Token obrazu oszczędza trochę przepustowości i opóźnień.

Cennik

DziałanieŚrodkiOpis
Testowanie0.00

Integracja z API i testowanie go jest bezpłatna, nie wymaga subskrypcji.

Use mode=test and mode=test_preview for development.

Możesz ocenić jakość wyników za pomocą interaktywnej aplikacji internetowej na pierwszej stronie.

Podgląd0.20

Oferujemy podgląd wyników, które możesz pokazać użytkownikom końcowym przed dokonaniem zakupu.

Podglądy są obrazami PNG czterokrotnie większymi niż dane wejściowe i są wyposażone w dyskretny znak wodny.

Use mode=preview to get a preview result.

Wektoryzacja1.00 Wektoryzuj obraz bitmapowy do obrazu wektorowego.
Podgląd aktualizacji0.90 Pobierz wynik produkcji po wywołaniu interfejsu API podglądu. Zdyskontowane w porównaniu do wektoryzacji od podstaw.
Format pobierania0.10 Pobierz inny format (np. SVG, PNG, PDF itp.) wyniku. Zdyskontowane w porównaniu do wektoryzacji od podstaw.
Dzień przechowywania0.01 Cena za dzień za przechowywanie wyniku po pierwszym dniu, która jest bezpłatna.

Zapoznaj się ze stroną cennika planów subskrypcji.

Uwierzytelnianie i bezpieczeństwo

Interfejs API używa standardowego podstawowego uwierzytelniania dostępu HTTP. Wszystkie żądania do interfejsu API muszą być kierowane przez HTTPS i muszą zawierać twoje poświadczenia API, z identyfikatorem API jako użytkownikiem i kluczem tajnym API jako hasłem.

Aby z powodzeniem wykonywać żądania, twoja biblioteka klienta HTTP musi obsługiwać oznaczanie nazwy serwera (SNI). Jeśli otrzymujesz dziwne błędy uzgadniania, to prawdopodobnie z tego powodu.

Limit szybkości

Używanie interfejsu API podlega ograniczeniu przepustowości z wysokimi przydziałami i bez stałej górnej granicy.

Prawdopodobieństwo napotkania na ograniczenie szybkości w zwykłym trybie działania sterowanym przez użytkownika końcowego jest małe, jako że usługa płynnie obsługuje tego rodzaju tryb użycia.

W przypadku zadań wsadowych zalecamy jednak, żeby zacząć od nie więcej niż 5 wątków, dodając 1 nowy wątek co 5 minut aż do osiągnięcia oczekiwanego poziomu równoległości. W razie potrzeby więcej niż 100 współbieżnych wątków, prosimy o kontakt przed rozpoczęciem procesu.

Przesłanie zbyt wielu żądań spowoduje otrzymanie odpowiedzi 429 Too Many Requests. W takim wypadku należy zastosować wycofanie liniowe: po otrzymaniu pierwszej takiej odpowiedzi odczekaj 5 sekund przed przesłaniem kolejnego żądania. Po drugiej kolejnej odpowiedzi 429 odczekaj 2*5=10 sekund przed przesłaniem kolejnych żądań. Po trzeciej odpowiedzi odczekaj 3*5=15 sekund, itd.

Po pomyślnie wykonanym żądaniu możesz zresetować licznik wycofania i stosować wycofanie dla poszczególnych wątków (tzn. wątki powinny działać niezależnie od siebie).

Limity czasu

Podczas gdy żądania API są zwykle wypełniane w ciągu kilku sekund, podczas przejściowych skoków obciążenia możliwe jest dłuższe czasy przetwarzania.

To ensure your client library doesn't prematurely terminate API requests it should be configured with an idle timeout of at least 180 seconds.

JSON błędu

Aby określić czy dane żądanie API zakończyło się pomyślnie czy niepomyślnie używamy konwencjonalnych statusów HTTP, uwzględniając istotne informacje o błędzie w zwróconym obiekcie JSON błędu.

Staramy się zawsze zwrócić obiekt JSON błędu dla każdego problematycznego żądania. Zawsze istnieje jednak teoretyczna możliwość wewnętrznych awarii serwera skutkujących odpowiedzią na błąd inną niż JSON.

Atrybuty

statusStatus HTTP odpowiedzi, powtórzony tutaj żeby pomóc z debugowaniem.
codeVectorizer.AI internal error code.
messageCzytelny dla użytkownika komunikat o błędzie, który ma pomóc w debugowaniu.

Jeżeli status HTTP dla żądania wynosi 200, obiekt JSON błędu nie zostanie zwrócony i można bezpiecznie założyć, że żądanie zasadniczo się powiodło.

Niektóre biblioteki klienta HTTP zgłaszają wyjątki dla statusów HTTP w zakresie 400-599. Wyjątki te trzeba przechwycić i odpowiednio obsłużyć.

HTTP StatusZnaczenie
200-299

Powodzenie

400-499

Wystąpił problem z informacją przekazaną w żądaniu (np. brakowało parametru). Przejrzyj komunikat o błędzie aby ustalić jak go rozwiązać.

500-599

There's been a Vectorizer.AI internal error. Zaczekaj chwilę i spróbuj ponownie, a jeśli problem nie zniknie, skontaktuj się z nami e-mailem.

Przykładowa odpowiedź na błąd

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

Ostatnie błędy interfejsu API są wyświetlane na stronie konta dla wygody debugowania.

Istnieje również lista wszystkich odpowiedzi na błędy zwracanych przez API.

Nagłówki odpowiedzi

Oto niestandardowe nagłówki odpowiedzi, których używamy:

NagłówekOpis
X-Image-Token

Returned when your vectorization request has policy.retention_days > 0. Może być używany do:

  1. Pobierz wynik produkcji po podglądzie wywołania API ze zniżką w porównaniu do wektoryzacji od podstaw.

  2. Pobierz dodatkowe formaty (np. SVG, PNG, PDF itp.) wyniku w zmniejszonej szybkości w porównaniu z wektoryzowaniem ich od podstaw.

  3. Ponownie wektoryzuj ten sam obraz z różnymi opcjami przetwarzania.

X-Receipt

Zwraca się po pobraniu wyniku produkcji przy użyciu podglądu tokenu obrazu. Może być używany do pobierania dodatkowych formatów (np. SVG, PNG, PDF itp.) wyniku z szybkością formatu pobierania zamiast szybkości podglądu aktualizacji.

X-Credits-Calculated

Wrócił z prośbami testowymi, aby pokazać koszty, które zostałyby poniesione, gdyby było to regularne żądanie.

X-Credits-Charged

Zwrócony ze wszystkimi prośbami o pokazanie poniesionych kosztów. Zawsze 0 dla próśb testowych.

Wektoryzacja POST
https://api.vectorizer.ai/api/v1/vectorize

Aby wektoryzować obraz, wykonaj standardowe przekazanie pliku HTTP POST. Pamiętaj, że przy przekazywaniu plików binarnych wymagany typ zawartości to multipart/form-data.

Poniższa tabela określa wszystkie parametry API w działającej i gotowej do wypróbowania formie. Każdemu parametrowi towarzyszy krótki opis, ale pamiętaj aby zapoznać się ze szczegółową Dokumentacją opcji plików wyjściowych.

Parametry

Obraz wejściowy musi zostać podany jako jeden z poniższych:


Binarny

Plik binarny.


Ciąg

Ciąg zaszyfrowany algorytmem base64. Rozmiar ciągu nie może przekraczać 1 megabajta.


Ciąg

Adres URL do pobierania i przetwarzania.


An Image Token, returned in the X-Image-Token header in an earlier vectorization API call where policy.retention_days > 0.

Musi być plikiem .bmp, .gif, .jpeg, .png, lub .tiff.

Maksymalny rozmiar przekazywanego obrazu (= szerokość × wysokość) wynosi 33 554 432 piksele, i zostanie zmniejszony do input.max_pixels.


Enum, domyślnie: production
Value Processing Mode Credits
production

Ten tryb jest przeznaczony do użytku produkcyjnego i obsługiwane są wszystkie parametry.

1.00
preview

Ten tryb jest przeznaczony, gdy chcesz pokazać użytkownikowi końcowemu podgląd przed dokonaniem zakupu.

Daje wynik 4x PNG z dyskretnym znakiem wodnym, ignorując wszelkie sprzeczne parametry.

0.20
test, test_preview

Te tryby są przeznaczone do użytku programistycznego podczas integracji z usługą. Wszystkie parametry są obsługiwane, ale istnieje znaczący znak wodny.

Wyniki testów są bezpłatne i nie wymagają aktywnej subskrypcji, dzięki czemu możesz bezpłatnie zintegrować się z usługą.

We include an X-Credits-Calculated header in the response so you can affirmatively know what you would have been charged for the corresponding production calls.

Bezpłatne

Liczba całkowita, 100 do 3145828, domyślnie: 2097252

Maksymalny rozmiar pliku wejściowego (= szerokość × wysokość w pikselach). Większe obrazy zostaną przed przetworzeniem zmniejszone do tego rozmiaru.


Liczba całkowita, 0 do 30, domyślnie: 0

Liczba dni na zachowanie obrazu wejściowego i jego wyniku. When you specify policy.retention_days > 0 we include an X-Image-Token header in the response.

Ma to trzy podstawowe zastosowania:

  1. Po wykonaniu połączenia API podglądu możesz później pobrać wynik produkcji szybko i ze zniżką.

  2. Po wektoryzacji obrazu możesz następnie pobrać wiele formatów wyjściowych dla tego samego obrazu i opcji przetwarzania bez konieczności wektoryzacji ich wszystkich od podstaw. Pozwala to znacznie zaoszczędzić zarówno kredyty, jak i opóźnienia.

  3. Jeśli chcesz ponownie wektoryzować ten sam obraz z różnymi opcjami przetwarzania. Pozwala to zmniejszyć opóźnienie połączeń i zaoszczędzić na przepustowości.

The first day of storage is free, then a charge of 0,01 credits per day applies.

Zobacz także punkt końco wy pobier ania.


Liczba całkowita, 0 do 256, domyślnie: 0

Maksymalna liczba kolorów do użycia wobec rezultatu.

0 oznacza liczbę nieograniczoną. Zarówno 1 jak i 2 oznacza dwa kolory, np. czarno-biały. N>=2 oznacza tę liczbę kolorów.

Note that if output.gap_filler.enabled=true (the default) then the result will also contain mixtures of the selected colors. Wyłącz wypełniacz szczeliny, aby uzyskać wynik tylko z wybranymi kolorami.


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

Default:   (empty)

Jest to bardzo potężny i elastyczny mechanizm do kontrolowania kolorów w wyniku.

Kolory wykryte na obrazie, które mieszczą się w tolerancji dowolnego koloru palety, zostaną przyciągnięte do najbliższego takiego koloru palety i ponownie mapowane, jeśli ten kolor palety ma określone ponowne mapowanie. Niezrównane kolory pozostają niezmienione.

Przykłady

Aby przyciągnąć wykryte kolory do najbliżej czerwonego, zielonego i niebieskiego, użyj:

#FF0000; 
#00FF00; 
#0000FF;

Aby wyczyścić wykryte kolory zbliżone do czerwonego, zielonego i niebieskiego, ale pozostać inne niezmienione, użyj:

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

Aby zmienić wykryte kolory zbliżone do czerwonego na zielony, pozostawiając wszystko inne niezmienione, użyj:

#FF0000 -> #00FF00 ~ 0.02;

Aby przyciągnąć do tych kolorów coś zbliżonego do czerwonego, zielonego i niebieskiego, ale wszystkie pozostałe kolory przyciągnąć do przezroczystej czerni (usuwając je w ten sposób z wyniku), użyj:

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

Kolory

Kolory są określane przy użyciu podstawowej składni kolorów CSS. W przypadku (częściowo) przezroczystych kolorów zalecamy użycie #RRGGBBAA. W przypadku nieprzezroczystych kolorów zalecamy użycie #RRGGBB.

W pełni przezroczyste kolory są pominięte w wyniku. Wraz z możliwością ponownego mapowania kolorów możesz użyć tego, aby usunąć wybrane kolory z wyniku.

You can use a maximum of 1 024 colors.

Tolerancja

Jednostka znajduje się w ułamkowej odległości kolorów ARGB, gdzie 1,0 to odległość od nieprzezroczystej czerwieni (#FFFF0000) do nieprzezroczystej czerni (#FF000000).

Maksymalna tolerancja wynosi 2,0, czyli odległość od przezroczystej czerni (#00000000) do nieprzezroczystej bieli (#FFFFFFFF).

The default tolerance is 2,0, so by default detected colors will snap to their nearest palette color, even if it is far away. Możesz ograniczyć przyciąganie do poszczególnych kolorów palet, określając niestandardowe tolerancje.

Jeśli jesteś przyzwyczajony do pracy z kolorami w zakresie 0-255, po prostu podziel przez 255, aby uzyskać wartość ułamkową.


Enum, domyślnie: svg

Format pliku wyjściowego.

Opcje SVG:


Enum, domyślnie: svg_1_1

Określ atrybut wersji SVG w tagu SVG. Szczegóły


Wartość logiczna, domyślnie: false

Czy atrybuty rozmiaru obrazu mają zostać ujęte w tagu SVG. W opcji true przeglądarki zwykle wyświetlą SVG w stałym rozmiarze. W opcji false przeglądarki umożliwią zwykle zeskalowanie i dopasowanie SVG do dostępnego miejsca. Szczegóły


Wartość logiczna, domyślnie: false

W opcji true wyłączamy opcje, których Adobe Illustrator nie jest w stanie importować. Szczegóły

Opcje DXF:


Enum, domyślnie: lines_and_arcs

Czytniki DXF znacząco różnią się od siebie pod względem oferowanych możliwości. Ta opcja pozwala na ograniczenie pliku wyjściowego do podstawowych rysunków faktycznie obsługiwanych przez twój czytnik DXF. Szczegóły

Opcje mapy bitowej:


Enum, domyślnie: anti_aliased
Value Anti-Aliasing Mode
anti_aliased Kolory pikseli wzdłuż granicy między kształtami są mieszane odpowiednio do tego jaką część obszaru piksela zajmuje każdy kształt.
aliased Pikselom przypisuje się kolor kształtu, który zawiera geometryczny środek danego piksela.

Enum, domyślnie: fill_shapes

Określ jakiego rodzaju obrys lub wypełnienie pliku wyjściowego chcesz uzyskać. Obrysowywanie kształtów różni się nieco od obrysowywania ich krawędzi. Wyjaśnienia zawiera szczegółowa dokumentacja


Enum, domyślnie: cutouts

Określa czy kształty umieszczane są w wycięciach w kształtach poniżej (cutouts) czy też nakładane jedne na drugie (stacked). Szczegóły


Enum, domyślnie: none
Value Shape grouping
none Bez grupowania
color Według koloru, współdziała z output.shape_stacking
parent Według zawierającego je kształtu
layer Według warstwy kolejności rysowania
Szczegóły

Wartość logiczna, domyślnie: false

Spłaszczanie rozpoznanych okręgów, elips, prostokątów, trójkątów i gwiazd do zwykłych krzywych. Szczegóły

Krzywe:


Wartość logiczna, domyślnie: true

Czy zezwalać na krzywe Beziera drugiego stopnia. Szczegóły


Wartość logiczna, domyślnie: true

Czy zezwalać na krzywe Beziera trzeciego stopnia. Szczegóły


Wartość logiczna, domyślnie: true

Czy zezwalać na łuki kołowe. Szczegóły


Wartość logiczna, domyślnie: true

Czy zezwalać na łuki eliptyczne. Szczegóły


Zmiennoprzecinkowa, 0.001 do 1.0, domyślnie: 0.1

Maksymalna odległość w pikselach pomiędzy łukiem a zbliżoną do niego linią. Szczegóły

Wypełnianie odstępów:


Wartość logiczna, domyślnie: true

Czy obejść usterki renderujące białe linie powszechne w przeglądarkach wektorów. Szczegóły


Wartość logiczna, domyślnie: false

Czy przycinać obrysy wypełniające odstępy. W opcji output.shape_stacking=stacked wycinaj albo zastosuj nieskalowalne obrysy. Szczegóły


Wartość logiczna, domyślnie: true

Czy stosować nieskalowalne obrysy do wypełniania odstępów. W opcji output.shape_stacking=stacked wycinaj albo zastosuj nieskalowalne obrysy. Szczegóły


Zmiennoprzecinkowa, 0.0 do 5.0, domyślnie: 2.0

Szerokość obrysów wypełniających odstępy. Szczegóły

Styl obrysu w przypadku jeśli output.draw_style to stroke_shapes lub stroke_edges


Wartość logiczna, domyślnie: true

Czy stosować obrys nieskalowalny. Szczegóły


Wartość logiczna, domyślnie: false

Czy stosować kolor nadrzędny czy szacowany kolor kształtu. Szczegóły


Format: '#RRGGBB', e.g. #FF00FF, default: #000000

Kolor nadrzędny. Szczegóły


Zmiennoprzecinkowa, 0.0 do 5.0, domyślnie: 1.0

Szerokość obrysu. Szczegóły

Rozmiar pliku wyjściowego:


Zmiennoprzecinkowa, 0.0 do 1000.0

Jednolity współczynnik skali. Jeśli zostaje określony, ma priorytet wobec output.size.width i output.size.height.


Zmiennoprzecinkowa, 0.0 do 1.0E12

Szerokość w jednostkach określonych przez output.size.unit. Przy podanej tylko samej szerokości lub wysokości, druga wartość zostanie wyliczona automatycznie aby zachować współczynnik proporcji.


Zmiennoprzecinkowa, 0.0 do 1.0E12

Wysokość w jednostkach określonych przez output.size.unit. Przy podanej tylko samej szerokości lub wysokości, druga wartość zostanie wyliczona automatycznie aby zachować współczynnik proporcji.


Enum, domyślnie: none

Jednostka miary szerokości i wysokości. Z wymienionych, pt, in, cm i mm to jednostki fizyczne, natomiast none i px to jednostki niefizyczne. Rozróżnienia te współpracują z output.size.input_dpi i output.size.output_dpi.


Enum, domyślnie: preserve_inset

Wartość Zasada skalowania
preserve_inset Zastosuj skalowanie jednolite do bardziej dopasowanego wymiaru, bez przepełnienia ale z pustą przestrzenią w drugim wymiarze
preserve_overflow Zastosuj skalowanie jednolite do mniej dopasowanego wymiaru, z przepełnieniem bardziej dopasowanego wymiaru
stretch Zastosuj skalowanie niejednolite z dopasowaniem do określonej szerokości i wysokości
W każdej opcji preserve pozycję w ramach nieograniczonego wymiaru kontroluje output.size.align_x lub output.size.align_y.


Zmiennoprzecinkowa, 0.0 do 1.0, domyślnie: 0.5

Wyrównanie poziome dla output.size.aspect_ratio = preserve_inset lub preserve_overflow.

Wartość Wyrównanie poziome
0.0 Wyrównane do lewej
0.5 Wyśrodkowane poziomo
1.0 Wyrównane do prawej
Może być dowolną wartością między 0.0 a 1.0.


Zmiennoprzecinkowa, 0.0 do 1.0, domyślnie: 0.5

Wyrównanie pionowe dla output.size.aspect_ratio = preserve_inset lub preserve_overflow.

Wartość Wyrównanie pionowe
0.0 Wyrównane do góry
0.5 Wyśrodkowane pionowo
1.0 Wyrównane do dołu
Może być dowolną wartością między 0.0 a 1.0.


Zmiennoprzecinkowa, 1.0 do 1000000.0

DPI obrazu wejściowego jest odczytywane z pliku, jeśli jest dostępne. Ten parametr pozwala na zastąpienie tej wartości. Wynikowa wartość służy do wyliczenia fizycznego rozmiaru obrazu wejściowego, stanowiącego podstawę wyliczenia rozmiaru wyjściowego w przypadku jeśli dla pliku wyjściowego określono jednostki fizyczne ale nie jawną szerokość lub wysokość.


Zmiennoprzecinkowa, 1.0 do 1000000.0

DPI obrazu wyjściowego. Służy do wyliczenia rozmiaru pikseli wyjściowej mapy bitowej w przypadku jeśli określono jednostki fizyczne.

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

Ten punkt końcowy umożliwia:

  1. Pobierz pełny wynik produkcji po wywołaniu interfejsu API podglądu.

    We include an X-Receipt header in the response so you can download additional output formats at the reduced download format rate afterwards.

  2. Pobierz wiele formatów wyjściowych dla tego samego obrazu i opcji przetwarzania przy zmniejszonej szybkości pobierania i bez konieczności wektoryzacji ich wszystkich od podstaw.

Parametry


An Image Token, returned in the X-Image-Token header in an earlier vectorization API call where policy.retention_days > 0.


Ciąg
Opcjonalne

A receipt, returned in the X-Receipt header in an earlier download API call where you upgraded a preview to a production result.

Przesyłając podgląd Image Token, musisz dołączyć pokwitowanie, aby uzyskać zmniejszoną szybkość formatu pobierania.


Enum, domyślnie: svg

Format pliku wyjściowego.

Opcje SVG:


Enum, domyślnie: svg_1_1

Określ atrybut wersji SVG w tagu SVG. Szczegóły


Wartość logiczna, domyślnie: false

Czy atrybuty rozmiaru obrazu mają zostać ujęte w tagu SVG. W opcji true przeglądarki zwykle wyświetlą SVG w stałym rozmiarze. W opcji false przeglądarki umożliwią zwykle zeskalowanie i dopasowanie SVG do dostępnego miejsca. Szczegóły


Wartość logiczna, domyślnie: false

W opcji true wyłączamy opcje, których Adobe Illustrator nie jest w stanie importować. Szczegóły

Opcje DXF:


Enum, domyślnie: lines_and_arcs

Czytniki DXF znacząco różnią się od siebie pod względem oferowanych możliwości. Ta opcja pozwala na ograniczenie pliku wyjściowego do podstawowych rysunków faktycznie obsługiwanych przez twój czytnik DXF. Szczegóły

Opcje mapy bitowej:


Enum, domyślnie: anti_aliased
Value Anti-Aliasing Mode
anti_aliased Kolory pikseli wzdłuż granicy między kształtami są mieszane odpowiednio do tego jaką część obszaru piksela zajmuje każdy kształt.
aliased Pikselom przypisuje się kolor kształtu, który zawiera geometryczny środek danego piksela.

Enum, domyślnie: fill_shapes

Określ jakiego rodzaju obrys lub wypełnienie pliku wyjściowego chcesz uzyskać. Obrysowywanie kształtów różni się nieco od obrysowywania ich krawędzi. Wyjaśnienia zawiera szczegółowa dokumentacja


Enum, domyślnie: cutouts

Określa czy kształty umieszczane są w wycięciach w kształtach poniżej (cutouts) czy też nakładane jedne na drugie (stacked). Szczegóły


Enum, domyślnie: none
Value Shape grouping
none Bez grupowania
color Według koloru, współdziała z output.shape_stacking
parent Według zawierającego je kształtu
layer Według warstwy kolejności rysowania
Szczegóły

Wartość logiczna, domyślnie: false

Spłaszczanie rozpoznanych okręgów, elips, prostokątów, trójkątów i gwiazd do zwykłych krzywych. Szczegóły

Krzywe:


Wartość logiczna, domyślnie: true

Czy zezwalać na krzywe Beziera drugiego stopnia. Szczegóły


Wartość logiczna, domyślnie: true

Czy zezwalać na krzywe Beziera trzeciego stopnia. Szczegóły


Wartość logiczna, domyślnie: true

Czy zezwalać na łuki kołowe. Szczegóły


Wartość logiczna, domyślnie: true

Czy zezwalać na łuki eliptyczne. Szczegóły


Zmiennoprzecinkowa, 0.001 do 1.0, domyślnie: 0.1

Maksymalna odległość w pikselach pomiędzy łukiem a zbliżoną do niego linią. Szczegóły

Wypełnianie odstępów:


Wartość logiczna, domyślnie: true

Czy obejść usterki renderujące białe linie powszechne w przeglądarkach wektorów. Szczegóły


Wartość logiczna, domyślnie: false

Czy przycinać obrysy wypełniające odstępy. W opcji output.shape_stacking=stacked wycinaj albo zastosuj nieskalowalne obrysy. Szczegóły


Wartość logiczna, domyślnie: true

Czy stosować nieskalowalne obrysy do wypełniania odstępów. W opcji output.shape_stacking=stacked wycinaj albo zastosuj nieskalowalne obrysy. Szczegóły


Zmiennoprzecinkowa, 0.0 do 5.0, domyślnie: 2.0

Szerokość obrysów wypełniających odstępy. Szczegóły

Styl obrysu w przypadku jeśli output.draw_style to stroke_shapes lub stroke_edges


Wartość logiczna, domyślnie: true

Czy stosować obrys nieskalowalny. Szczegóły


Wartość logiczna, domyślnie: false

Czy stosować kolor nadrzędny czy szacowany kolor kształtu. Szczegóły


Format: '#RRGGBB', e.g. #FF00FF, default: #000000

Kolor nadrzędny. Szczegóły


Zmiennoprzecinkowa, 0.0 do 5.0, domyślnie: 1.0

Szerokość obrysu. Szczegóły

Rozmiar pliku wyjściowego:


Zmiennoprzecinkowa, 0.0 do 1000.0

Jednolity współczynnik skali. Jeśli zostaje określony, ma priorytet wobec output.size.width i output.size.height.


Zmiennoprzecinkowa, 0.0 do 1.0E12

Szerokość w jednostkach określonych przez output.size.unit. Przy podanej tylko samej szerokości lub wysokości, druga wartość zostanie wyliczona automatycznie aby zachować współczynnik proporcji.


Zmiennoprzecinkowa, 0.0 do 1.0E12

Wysokość w jednostkach określonych przez output.size.unit. Przy podanej tylko samej szerokości lub wysokości, druga wartość zostanie wyliczona automatycznie aby zachować współczynnik proporcji.


Enum, domyślnie: none

Jednostka miary szerokości i wysokości. Z wymienionych, pt, in, cm i mm to jednostki fizyczne, natomiast none i px to jednostki niefizyczne. Rozróżnienia te współpracują z output.size.input_dpi i output.size.output_dpi.


Enum, domyślnie: preserve_inset

Wartość Zasada skalowania
preserve_inset Zastosuj skalowanie jednolite do bardziej dopasowanego wymiaru, bez przepełnienia ale z pustą przestrzenią w drugim wymiarze
preserve_overflow Zastosuj skalowanie jednolite do mniej dopasowanego wymiaru, z przepełnieniem bardziej dopasowanego wymiaru
stretch Zastosuj skalowanie niejednolite z dopasowaniem do określonej szerokości i wysokości
W każdej opcji preserve pozycję w ramach nieograniczonego wymiaru kontroluje output.size.align_x lub output.size.align_y.


Zmiennoprzecinkowa, 0.0 do 1.0, domyślnie: 0.5

Wyrównanie poziome dla output.size.aspect_ratio = preserve_inset lub preserve_overflow.

Wartość Wyrównanie poziome
0.0 Wyrównane do lewej
0.5 Wyśrodkowane poziomo
1.0 Wyrównane do prawej
Może być dowolną wartością między 0.0 a 1.0.


Zmiennoprzecinkowa, 0.0 do 1.0, domyślnie: 0.5

Wyrównanie pionowe dla output.size.aspect_ratio = preserve_inset lub preserve_overflow.

Wartość Wyrównanie pionowe
0.0 Wyrównane do góry
0.5 Wyśrodkowane pionowo
1.0 Wyrównane do dołu
Może być dowolną wartością między 0.0 a 1.0.


Zmiennoprzecinkowa, 1.0 do 1000000.0

DPI obrazu wejściowego jest odczytywane z pliku, jeśli jest dostępne. Ten parametr pozwala na zastąpienie tej wartości. Wynikowa wartość służy do wyliczenia fizycznego rozmiaru obrazu wejściowego, stanowiącego podstawę wyliczenia rozmiaru wyjściowego w przypadku jeśli dla pliku wyjściowego określono jednostki fizyczne ale nie jawną szerokość lub wysokość.


Zmiennoprzecinkowa, 1.0 do 1000000.0

DPI obrazu wyjściowego. Służy do wyliczenia rozmiaru pikseli wyjściowej mapy bitowej w przypadku jeśli określono jednostki fizyczne.

Usuń POST
https://api.vectorizer.ai/api/v1/delete

Images vectorized with policy.retention_days > 0 are stored for the requested time period and deleted automatically shortly thereafter.

Zwykle nie ma potrzeby wywoływania tego punktu końcowego. Jest on zapewniony, abyś mógł usuwać obrazy przed upływem okresu przechowywania. Wczesne usunięcie obrazu nie daje zwrotu kosztów za pozostałe dni przechowywania.

Parametry


An Image Token, returned in the X-Image-Token header in an earlier vectorization API call where policy.retention_days > 0.

Atrybuty odpowiedzi

success

true Token obrazu został potwierdzająco usunięty.

Przykładowa odpowiedź

{
  "success" : true
}

Status konta GET
https://api.vectorizer.ai/api/v1/account

Pobierz ogólne informacje o swoim koncie, takie jak status subskrypcji i ilość posiadanych środków.

Parametry

Brak

Atrybuty odpowiedzi

subscriptionPlan

Plan subskrypcji, z którego obecnie korzystasz, albo "brak".

subscriptionState

Status twojej aktualnej subskrypcji ("aktywna" albo "zaległa") lub jeżeli subskrypcja nie istnieje - "zakończono".

credits

Liczba kredytów API pozostałych na Twoim koncie. 0, jeśli nie jest aktualnie subskrybowany lub subskrybowany do planu innego niż API. Może być ułamkowy, więc pamiętaj, aby przeanalizować jako podwójny.

Nazwa użytkownika = Identyfikator API, Hasło = Tajne API

cURL

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

Przykładowa odpowiedź

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

Dziennik zmian interfejsu API

DataZmień
1 paź 2024 Dodano chatbota AI, aby pomóc w integracji z interfejsem API.
23 wrz 2024 Znacznie rozszerzono interfejs API, aby umożliwić więcej trybów działania. Dodano tokeny graficzne, pokwitowania, nagłówki opłat za połączenie oraz punkty końcowe pobierania i usuwania.
11 cze 2024 Dodano processing.palette
4 mar 2024 Dodano sekcję dotyczącą limitu czasu.
24 sty 2024 Dodano punkt końcowy stanu konta. Dodano ostatnie błędy API na stronie Konto. Dodano listę wszystkich odpowiedzi na błędy API.
16 sty 2024 Udokumentowano błąd obiektu JSON.
3 paź 2023 Clarified that output.gap_filler.enabled=true leads to more colors in the result than requested in processing.max_colors.
20 wrz 2023 Dodano mode
1 sie 2023 Dodano kompleksową grupę opcji rozmiarów pliku wyjściowego obejmującą następujące opcje: 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 oraz output.size.output_dpi. Dodano grupę opcji wyjściowej mapy bitowej z jedną opcją: output.bitmap.anti_aliasing_mode.
7 cze 2023 Dodano processing.max_colors
31 maj 2023 Znacznie rozszerzono parametry interfejsu API. Zaktualizowano punkt końcowy interfejsu API.
10 mar 2023 Początkowe wydanie.
Uzyskaj klucz interfejsu API