Vectorizer.AI tam donanımlı bir bit eşlem çevirici API sunmaktadır. API pikselleri vektöre tamamen otomatik ve sınıfının en iyisi doğrulukta çevirir.
Bir bit eşlem resmi yükleyin ve vektörleşmiş sonucu hemen alın:
$ curl https://tr.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://tr.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://tr.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://tr.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://tr.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://tr.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://tr.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://tr.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://tr.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://tr.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://tr.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://tr.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://tr.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://tr.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 entegrasyonunuza yardımcı olabilecek, özel yapım bir ChatGPT oluşturduk. API dokümentasyonu hakkındaki sorularınıza cevap verip sizin kullanımıza göre, tercih ettiğiniz dilde örnek kod sunabilir.
Vectorizer.AI API Sohbet Robotu ile Sohbet Edin
Sohbet robotu şu an beta seviyesinde ve hata yapabilir. Verdiği cevapları kontrol edin ve hataları ve eksiklikleri düzeltmek için kodu gözden geçirmesini isteyin.
API çok sayıda farklı kullanım durumunu desteklemek için tasarlanmıştır. Yaygın olan bir kaç tanesi şunlardır:
Vektörleştirme son noktasını ve yukarıdaki kod örneklerini kullanın.
Satış gerçekleştirmek için çok sayıda API çağrısı yapmanız gereken durumlarda, müşteriyi gerçekten ikna edene kadar daha düşük maliyetli önizlemeleri kullanabilirsiniz.
Önizleme için, X-Image-Token
yanıt başlığında döndürülen Resim Belirtecinin korunduğundan emin olup, Vektörleştir son noktasını mode=preview
ve policy.retention_days > 0
ile kullanın.
Dönüştürmenin ardından, tam sonucu indirmek için İndir son noktasını Resim Belirteciyle kullanın.
İsteğe bağlı: ek sonuç formatlarına (örneğin PNG, PDF, vb.) ihtiyaç duyduğunuz takdirde, X-Receipt
indirme yanıt başlığında döndürülen Alındıyı sakladığınızdan emin olun. Daha sonra, Resim Belirteci ve Alındısıyla birlikte İndir son noktasını kalan formatları indirmek için kullanın.
X-Image-Token
yanıt başlığında döndürülen Resim Belirtecini koruduğunuzdan emin olup, ilk sonucu almak için Vektörleştir son noktasını policy.retention_days > 0
koduyla kullanın.
Diğer formatları indirmek için İndir son noktasını Resim Belirteciyle kullanın.
X-Image-Token
yanıt başlığında döndürülen Resim Belirtecini koruduğunuzdan emin olup, ilk sonucu almak için Vektörleştir son noktasını policy.retention_days > 0
koduyla kullanın.
İhtiyacınız duyduğunuz kalan işleme seçeneklerinde bunu yinelemek için Vektörleştir son noktasını Resim Belirteciyle kullanın.
Ya da alternatif olarak her bir resmi ayrı ayrı işleyebilir ve Resim Belirtecini görmezden gelebilirsiniz. Resim Belirteci size biraz bant genişliği ve gecikmesi süresinden tasarruf sağlar.
Eylem | Kredi | Tanım |
---|---|---|
Test | 0.00 |
API'ye entegre olma ve test etme ücretsizdir, aboneliğe gerek yoktur.
Basım için Ön sayfada bulunan etkileşimli Web Uygulamasını kullanarak sonuç kalitesini değerlendirebilirsiniz. |
Ön izleme | 0.20 |
Ayrıca, son kullanıcınız satın alma gerçekleştirmeden önce onlara gösterebileceğiniz önizleme sonuçları sunuyoruz. Önizlemeler, sizin girdinizden dört kat daha büyük olan PNG resimleridir ve gizli bir filigran içermektedir.
Önizleme sonucu almak için |
Vektörleştir | 1.00 | Biteşlem resmini vektör resmine dönüştürün. |
Yükseltmenin Önizlemesi | 0.90 | Önizleme API çağrısının ardından üretim sonucunu indirin. Sıfırdan vektörleştirmeye göre daha hesaplı. |
Formatı İndir | 0.10 | Sonucu başka bir formatta (örneğin SVG, PNG, PDF, vb.) indirin. Sıfırdan vektörleştirmeye göre daha hesaplı. |
Depolama Günü | 0.01 | Ücretsiz olan ilk günden sonra sonucu depolamak için gerekli gün başına ücret. |
Abonelik planları için lütfen fiyatlandırma sayfasına bakınız.
API standart HTTP temel erişim kimlik doğrulaması kullanmaktadır. API'ye yapılan tüm isteklerin HTTPS üzerinden yapılması ve sizin kullanıcı olarak API kimliğinizi ve şifre olarak da API Parolası ile API Bilgilerinizi içermesi gerekmektedir.
Http istemci kitaplığınızın istekleri başarıyla gerçekleştirmesi için Sunucu Adı Belirtme (SNI) desteklemesi gerekmektedir. Eğer garip el sıkışma hatalarıyla karşılaşıyorsanız nedeni muhtemelen budur.
API kullanım limitleri gayet bol tutulmuştur ve kesin bir üst sınır bulunmamaktadır.
Normal son kullanıcı işlemlerinde herhangi bir hız sınırlamasına rastlamanız pek olası değildir. Zira o durumdaki kullanım inişli çıkışlı olma eğilimindedir ve servis de bunun altından gayet rahatlıkla kalkar.
Bununla birlikte, gruplu işlerde en fazla 5 iş parçacığı ile başlayıp, arzu edilen paralelliğe erişene kadar her 5 dakikada bir yeni iş parçacığı eklemenizi tavsiye ediyoruz. Eğer 100'den fazla eş zamanlı iş parçacığına ihtiyacınız olacaksa çalışmaya başlamadan önce lütfen bizimle iletişime geçin.
Eğer çok fazla istek girişi yaparsanız, 429 Too Many Requests
yanıtları almaya başlarsınız. Bu olduğunda doğrusal geri çekilme uygulamalısınız: böyle bir yanıtı ilk aldığınızda, bir sonraki isteği girmeden önce 5 saniye bekleyin. İkinci ardışık 429 yanıtında, bir sonraki isteği girene kadar 2*5=10 saniye bekleyin. Üçüncüde 3*5=15 saniye bekleyin.
İsteğinizin başarılı olmasının ardından geri çekilme sayacını sıfırlayabilirsiniz. Geri çekilmeyi iş parçacığı başına olacak şekilde uygulamanız iyi olacaktır (Mesela iş parçacıkları birbirinden bağımsız olarak çalışmalıdır).
API talepleri normalde saniyeler içerisinde tamamlanmakla birlikte ani geçici yük artışları esnasında daha uzun süren işlem süreleriyle karşılaşılması olasıdır.
İstemci kitaplığınızın API isteklerini erkenden sonlandırmadığından emin olmak için eylemsiz zaman aşımının en az 180 saniye olarak ayarlanması gerekmektedir.
API isteğinin başarılı veya başarısız olduğunu göstermek için geleneksel HTTP statüleri kullanılır ve hataya ilişkin önemli bilgiler dönen Hatalı JSON Nesnesinde bulunur.
Herhangi bir sorunlu istek olması durumunda Hatalı JSON Nesnesi yollamaya çalışıyoruz. Ancak teorik olarak JSON-dışı hata yanıtına neden olan dahili sunucu hatalarının olması her zaman mümkündür.
Özellikler |
|
---|---|
status | Yanıtın HTTP durumu, hata ayıklaması işlemine yardımcı olmak için burada tekrar edilmiştir. |
code | Vectorizer.AI iç hata kodu. |
message | Okunabilir hata mesajı, hata ayıklamasında yardımcı olma amaçlıdır. |
Eğer isteğinizin HTTP statüsü 200 ise hiçbir hatalı JSON Nesnesi döndürülmeyecektir. İsteğin genel anlamda başarılı olduğunu düşünebilirsiniz.
Bazı HTTP İstemci kitaplıkları 400
-599
aralığındaki HTTP statüleri için özel durum oluşturmaktadır. Bu özel durumları yakalayıp uygun bir şekilde işlem yapmanız gerekecektir.
HTTP Status | Anlamı |
---|---|
200 -299
|
Başarı |
400 -499
|
İstekte verilen bilgide (örneğin eksik bir parametre gibi) bir sorun bulunmaktadır. Sorunu çözmek için lütfen hata mesajını gözden geçirin. |
500 -599
|
Vectorizer.AI iç hata kodu oluştu. Bir dakika bekleyip daha sonra tekrar deneyin. Sorunun hala devam etmesi halinde lütfen bize e-posta yollayın. |
Örnek Hata Yanıtı
{ "error" : { "status" : 400, "code" : 1006, "message" : "Failed to read the supplied image. " } }
Hata ayıklama yapabilmeniz için Son zamanlardaki API hataları hesabınız sayfasında listelenmiştir.
Ayrıca API tarafından döndürülen tüm hata yanıtlarının bir listesi de bulunmaktadır.
Kullandığımız özel yanıt başlıkları şöyle:
Başlık | Tanım |
---|---|
X-Image-Token
|
Vektörleştirme isteğinizde
|
X-Receipt
|
Önizleme Resim Belirteci kullanarak bir üretim sonucu indirdiğinizde döndürülür. Ek formatları (örneğin, SVG, PNG, PDF,vb.), önizlemeyi üst pakete taşıma ücreti yerine indirme formatı ücretiyle indirmek için kullanılabilir. |
X-Credits-Calculated
|
Normal bir talep olsa ortaya çıkacak olan maliyeti göstermek için test talepleriyle döndürülmektedir. |
X-Credits-Charged
|
Oluşan maliyeti göstermek için olan tüm isteklerle döndürülür. Test talepleri için her zaman 0. |
POST
https://api.vectorizer.ai/api/v1/vectorize
Bir resmi vektörleştirmek için standart bir HTTP POST dosyası yüklemesi yapılır. Unutmayın ikili dosyaları yüklerken İçerik Türü multipart/form-data
olmak zorundadır.
Aşağıdaki tablo, işleyen bir şimdi-dene formunda tüm API parametrelerini ortaya koymaktadır. Her bir parametrenin kısa bir tanımı vardır ancak mutlaka detaylı Çıktı Seçenekleri Belgesini inceleyin.
POST
https://api.vectorizer.ai/api/v1/download
Bu son nokta size şu izinleri verir:
Önizleme API çağrısının ardından tam üretim sonucunu indirin.
Ek çıktı formatlarını indirimli indirme formatı fiyatlarıyla daha sonra indirebilmeniz için yanıta X-Receipt
başlığını ekliyoruz.
Hepsini sıfırdan vektörleştirmek zorunda kalmadan aynı resim için çok sayıda çıktı formatını ve işleme seçeneğini indirimli indirme formatı fiyatından indirebilirsiniz.
POST
https://api.vectorizer.ai/api/v1/delete
policy.retention_days > 0
ile vektörleştirilen resimler talep edilen zaman zarfında saklanır ve hemen ardından otomatik olarak silinir.
Normalde bu son noktayı çağırmaya gerek yoktur. Bu size saklama dönemini sona ermesinden önce resimleri silebilmeniz amacıyla sunulmaktadır. Resmi daha önce silmeniz size kalan saklama günleri için geri ödeme imkanı sunmamaktadır.
Yanıt Özellikleri |
|
---|---|
success |
|
Örnek Yanıt
{ "success" : true }
GET
https://api.vectorizer.ai/api/v1/account
Hesabınıza ilişkin abonelik statüsü ve kalan kredi sayısı gibi temel bilgileri getirin.
Parametreler |
|
---|---|
Yok |
Yanıt Özellikleri |
|
---|---|
subscriptionPlan |
Şu anda abone olduğunuz plan veya 'hiç'. |
subscriptionState |
Mevcut aboneliğinizin statüsü ('aktif' veya 'ödemesi gecikmiş') veya abone değilseniz 'sona erdi'. |
credits |
Hesabınızda kalan API kredisi sayısı. Halihazırda üyü değilseniz veya API-dışı bir plana üyeyseniz. Kesirli olabilir, o yüzden Çift olarak incelediğinizden emin olun. |
Kullanıcı adı= API kimliği, Şifre= API Parolası
cURL
$ curl "https://api.vectorizer.ai/api/v1/account" \ -u vkyc67kqa27yidd:[secret]
Örnek Yanıt
{ "subscriptionPlan" : "none", "subscriptionState" : "ended", "credits" : 0 }
Tarih | Değiştir |
---|---|
4 Kas 2024 |
processing.shapes.min_area_px eklendi.
|
1 Eki 2024 | API ile entegrasyona yardımcı olması için bir Yapay Zeka sohbet robotu eklendi. |
23 Eyl 2024 | Daha fazla işlem moduna imkan sağlamak için API'yi büyük miktarda genişlettik. Resim Belirteci, Alındı, çağrı başına fiyat başlıkları ve İndirme ve Silme son noktaları eklendi. |
11 Haz 2024 |
processing.palette eklendi
|
4 Mar 2024 | Zaman aşımlarıyla ilgili eklenen bölüm. |
24 Oca 2024 | Hesap Durumu uçnoktası eklendi. Hesap sayfasına son API hataları eklendi. Tüm API hata yanıtları listesi eklendi. |
16 Oca 2024 | Hatalı JSON Nesnesi belgelendi. |
3 Eki 2023 |
output.gap_filler.enabled=true kodunun sonuç açısından processing.max_colors koduyla istenenden daha fazla renge neden olduğu netleştirildi.
|
20 Eyl 2023 |
mode eklendi
|
1 Ağu 2023 |
Çok özellikli çıktı boyutu seçenekleri eklenmiştir. Seçenekler şöyledir: 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 ve output.size.output_dpi . Bit eşlem çıktı seçenekleri grubu için tek bir seçenek eklenmiştir: output.bitmap.anti_aliasing_mode .
|
7 Haz 2023 |
processing.max_colors eklendi
|
31 May 2023 | API parametreleri büyük oranda genişletildi. API son noktası güncellendi. |
10 Mar 2023 | İlk piyasaya sürüm. |