Vectorizer.AI menawarkan API pelacakan bitmap lengkap. API melacak piksel ke vektor sepenuhnya secara otomatis dan dengan fidelitas terbaik di kelasnya.
POST gambar bitmap dan dapatkan hasil vektorisasi kembali:
$ curl https://id.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://id.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://id.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://id.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://id.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://id.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://id.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://id.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://id.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://id.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://id.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://id.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://id.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://id.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
Integrasi dan pengujian API gratis, tidak perlu berlangganan.
Cukup gunakan mode=test
untuk pengembangan. Anda dapat menilai kualitas hasil menggunakan Aplikasi Web interaktif di halaman depan.
Hasil produksi memerlukan langganan dan masing-masing bernilai 1,00 credits.
Kami juga menawarkan hasil pratinjau yang dapat Anda tunjukkan kepada pengguna akhir sebelum mereka melakukan pembelian.
Pratinjau adalah gambar PNG empat kali lebih besar dari masukan Anda, dilengkapi dengan tanda air yang tersembunyi, dan biaya 0,20 credits masing-masing.
Cukup gunakan mode=preview
untuk mendapatkan hasil pratinjau.
Silakan lihat halaman harga untuk paket berlangganan.
API menggunakan otentikasi akses dasar HTTP standar. Semua permintaan ke API harus dilakukan melalui HTTPS dan menyertakan Kredensial API Anda, dengan ID API sebagai pengguna dan Rahasia API sebagai kata sandi.
Pustaka klien http Anda harus mendukung Server Name Indication (SNI) untuk membuat permintaan berhasil. Jika Anda mendapatkan kesalahan jabat tangan yang aneh, kemungkinan besar inilah masalahnya.
Penggunaan API dibatasi tarif dengan tunjangan yang murah hati dan tidak ada batas atas yang keras.
Selama operasi normal yang digerakkan oleh pengguna akhir, Anda tidak akan mengalami pembatasan kecepatan karena penggunaan cenderung surut dan mengalir dengan cara yang ditangani layanan dengan baik.
Namun, untuk pekerjaan batch kami sarankan untuk memulai dengan paling banyak 5 utas, menambahkan 1 utas baru setiap 5 menit hingga Anda mencapai tingkat paralelisme yang diinginkan. Harap hubungi sebelum memulai jika Anda membutuhkan lebih dari 100 rangkaian pesan bersamaan.
Jika Anda mengirimkan terlalu banyak permintaan, Anda akan mulai mendapatkan jawaban 429 Too Many Requests
. Jika ini terjadi, Anda harus menerapkan linear back off: pada respons pertama seperti itu, tunggu 5 detik hingga mengirimkan permintaan berikutnya. Pada jawaban 429 kedua berturut-turut, tunggu 2*5=10 detik hingga mengirimkan permintaan berikutnya. Yang ketiga tunggu 3*5=15 detik, dan seterusnya.
Anda dapat mengatur ulang penghitung mundur setelah permintaan berhasil, dan Anda harus menerapkan mundur pada basis per utas (yaitu utas harus beroperasi secara independen satu sama lain).
POST
https://api.vectorizer.ai/api/v1/vectorize
Untuk membuat vektor gambar, Anda melakukan unggahan file HTTP POST standar. Harap diingat Jenis Isi harus multipart/form-data
saat mengunggah file biner.
Tabel di bawah menjabarkan semua parameter API dalam bentuk coba-sekarang yang berfungsi. Setiap parameter memiliki deskripsi singkat, tetapi pastikan untuk memeriksa Dokumentasi Opsi Keluaran mendetail.
Tanggal | Ganti |
---|---|
3 Okt 2023 |
Mengklarifikasi bahwa output.gap_filler.enabled=true menghasilkan lebih banyak warna pada hasil daripada yang diminta dalam processing.max_colors .
|
20 Sep 2023 |
Ditambahkan mode
|
1 Agu 2023 |
Menambahkan grup opsi ukuran keluaran berfitur lengkap dengan opsi berikut: 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 , dan output.size.output_dpi . Menambahkan grup opsi keluaran bitmap dengan satu opsi: output.bitmap.anti_aliasing_mode .
|
7 Jun 2023 |
Ditambahkan processing.max_colors
|
31 Mei 2023 | Sangat memperluas parameter API. Memperbarui titik akhir API. |
10 Mar 2023 | Peluncuran pertama. |