Vectorizer.AI đưa ra API truy xuất bitmap được phát triển đầy đủ. API tự động truy xuất pixel đến các vector đầy đủ và với độ trung thực tốt nhất trong lớp.
ĐĂNG một ảnh bitmap và nhận lại kết quả vector.
$ curl https://vi.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://vi.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://vi.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://vi.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://vi.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://vi.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://vi.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://vi.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://vi.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://vi.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://vi.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://vi.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://vi.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://vi.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
Chúng tôi đã tạo một ChatGPT tùy chỉnh có thể giúp bạn tích hợp API của bạn. Nó có thể trả lời các câu hỏi về tài liệu API và cung cấp mã mẫu bằng ngôn ngữ ưa thích của bạn phù hợp với trường hợp sử dụng của bạn.
Chat with the Vectorizer.AI API Chatbot
Chatbot đang trong giai đoạn beta và mắc lỗi. Kiểm tra kỹ các câu trả lời và yêu cầu nó sửa đổi mã để sửa lỗi và thiếu sót.
API được thiết kế để hỗ trợ nhiều trường hợp sử dụng khác nhau. Dưới đây là một vài cái phổ biến:
Sử dụng điểm cuối Vectorize và các mẫu mã ở trên.
Nếu bạn cần thực hiện nhiều lệnh gọi API để bán hàng, bạn có thể sử dụng các bản xem trước chi phí thấp hơn cho đến khi bạn thực sự chuyển đổi khách hàng.
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.
Sau khi chuyển đổi, hãy sử dụng điểm cuối Tải xuống với Mã thông báo hình ảnh để tải xuống kết quả đầy đủ.
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. Sau đó sử dụng điểm cuối Tải xuống với Mã thông báo hình ảnh và Biên nhận để tải xuống các định dạng còn lại.
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.
Sử dụng điểm cuối Tải xuống với Mã thông báo hình ảnh để tải xuống các định dạng khác.
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.
Sử dụng điểm cuối Vectorize với Mã thông báo hình ảnh để lặp lại các tùy chọn xử lý còn lại mà bạn cần.
Ngoài ra, bạn có thể xử lý từng hình ảnh riêng lẻ và không lo lắng về Mã thông báo hình ảnh. Image Token giúp bạn tiết kiệm một chút băng thông và độ trễ.
Tác vụ | Điểm | Mô Tả |
---|---|---|
Thử nghiệm | 0.00 |
Nó hoàn toàn miễn phí để tích hợp và kiểm tra API, không cần đăng ký.
Use Bạn có thể đánh giá chất lượng kết quả bằng cách dùng Ứng Dụng Trang Web Tương Tác Qua Lại ở trang bìa. |
Xem Trước | 0.20 |
Chúng tôi cung cấp kết quả xem trước mà bạn có thể hiển thị cho người dùng cuối của mình trước khi họ mua hàng. Xem trước là hình ảnh PNG lớn hơn bốn lần so với đầu vào của bạn và đi kèm với hình mờ kín đáo.
Use |
Vector Hoá | 1.00 | Vectơ hóa hình ảnh bitmap thành hình ảnh vector. |
Xem trước nâng cấp | 0.90 | Tải xuống kết quả sản xuất sau khi gọi API xem trước. Giảm giá so với vectơ hóa nó từ đầu. |
Định dạng tải xuống | 0.10 | Tải xuống một định dạng khác (ví dụ: SVG, PNG, PDF, v.v.) của kết quả. Giảm giá so với vectơ hóa nó từ đầu. |
Ngày lưu trữ | 0.01 | Giá mỗi ngày để lưu trữ kết quả sau ngày đầu tiên, miễn phí. |
Vui lòng xem trang giá cho gói đăng ký.
API sử dụng xác thực truy cập cơ bản HTTP tiêu chuẩn. Tất cả các yêu cầu đối với API phải được thực hiện qua HTTPS và bao gồm API của bạn. Các chứng nhận, có Id API là người dùng và Bí mật API là mật khẩu.
Thư viện khách hàng http của bạn phải hỗ trợ Chỉ Định Tên Máy Chủ (SNI) để thực hiện thành công các yêu cầu. Nếu bạn nhận được các lỗi giao tiếp lạ, việc thiếu hỗ trợ SNI có thể chính là lý do.
Việc sử dụng API bị giới hạn tốc độ với các hạn mức cho phép mang tính hào phóng và không có giới hạn trần vượt.
Trong quá trình hoạt động thông thường do người dùng cuối điều khiển, bạn sẽ ít gặp phải bất kỳ giới hạn tốc độ nào vì việc sử dụng có xu hướng tăng giảm theo cách mà dịch vụ xử lý một cách ổn thoả.
Dù vậy, đối với các công việc hàng loạt chúng tôi khuyến khích bắt đầu nhiều nhất là 5 chuỗi, tăng thêm 1 chuỗi mới mỗi 5 phút cho đến khi bạn đạt đến mức độ song song mong muốn. Nếu bạn cần hơn 100 chuỗi cùng lúc, vui lòng liên hệ trước khi bắt đầu.
Nếu bạn gửi quá nhiều yêu cầu thì bạn sẽ bắt đầu nhận các phản hồi 429 Too Many Requests
. Khi điều này xảy ra, bạn nên áp dụng linear back off//: trước phản hồi đầu tiên đó, đợi 5 giây cho đến khi gửi yêu cầu tiếp theo. Đối với 429 phản hồi liên tục thứ hai/, hãy đợi 2*5= 10 giây cho đến khi gửi yêu cầu tiếp theo. Đối với thứ bạ, đợi 3*5=15 giây, v.v.
Bạn có thể đặt lại bộ đếm back off sau khi yêu cầu thành công và bạn nên sử dụng back off trên cơ sở mỗi chuỗi (chẳng hạn các chuỗi nên hoạt động độc lập với nhau).
Trong khi các yêu cầu của API thông thường được nhanh chóng làm xong, có thể trong suốt thời gian đột ngột tăng hoặc giảm tải tạm thời của người dùng đê trải nghiệm thời gian xử lý lâu hơn.
Nhằm để đảm bảo thư viện khách hàng của bạn không chấm dứt các yêu cầu API trước thời hạn, nên cấu hình có thời gian chờ không hoạt động ít nhất 180giây
Chúng tôi sử dụng nguyên trạng HTTP quy ước để cho thấy sự thành công hay thất bại của một yêu cầu API và bao gồm những thông tin lỗi quan trọng trong Đối tượng Lỗi JSON (Error JSON Object) được trả về.
Chúng tôi luôn cố gắng trả về Đối tượng Lỗi JSON (Error JSON Object) với bất kỳ yêu nào có vấn đề. Tuy nhiên, có những thất bại của máy chủ nội bộ luôn luôn có thể về mặt lý thuyết mà việc đó dẫn đến phản hồi không không phải do lỗi JSON.
Các Thuộc Tính |
|
---|---|
status | Trạng thái phản hồi của HTTP được lập lại ở đây để giúp cho việc gỡ lỗi. |
code | Vectorizer.AI mã lỗi nội bộ. |
message | Tin nhắn lỗi người có thể đọc được, dự định có ích trong việc gỡ lỗi. |
Nếu trạng thái HTTP đối với yêu cầu của bạn là 200 thì sẽ không có Đối Tượng Lỗi JSON (Error JSON Object) nào được trả về và bạn có thể giả định một cách an toàn nói chung là yêu cầu đã thành công/.
Một số Thư Viện Khách Hàng HTTP đưa ra các lỗi/ về nguyên trạng HTTP/ trong phạm vi 400
-599
. Bạn sẽ cần nắm lấy các lỗi này và xử lý chúng phù hợp.
HTTP Status | Ý nghĩa |
---|---|
200 -299
|
Thành Công |
400 -499
|
Có vấn đề với thông tin được cung cấp trong yêu cầu (chẳng hạn đã mất một tham số). Vui lòng xem xét tin nhắn lỗi để tìm ra cách sửa nó. |
500 -599
|
Đã có Vectorizer.AI mã lỗi nội bộ. Đợi 1 chút rồi thử lại và nếu sự cố cứ tiếp tục tồn tại, vui lòng email cho chúng tôi. |
Example Error Response
{ "error" : { "status" : 400, "code" : 1006, "message" : "Failed to read the supplied image. " } }
Lỗi API gần đây được liệt kê trên trang tài khoản của bạn để tiện cho bạn gỡ lỗi.
Cũng có một danh sách tất cả các phản ứng lỗi được API trả về .
Dưới đây là các tiêu đề phản hồi tùy chỉnh mà chúng tôi sử dụng:
Tiêu đề | Mô Tả |
---|---|
X-Image-Token
|
Returned when your vectorization request has
|
X-Receipt
|
Trả về khi bạn tải xuống kết quả sản xuất bằng Mã thông báo hình ảnh xem trước. Có thể được sử dụng để tải xuống các định dạng bổ sung (ví dụ: SVG, PNG, PDF, v.v.) của kết quả ở tốc độ định dạng tải xuống thay vì tốc độ xem trước nâng cấp. |
X-Credits-Calculated
|
Trả về với các yêu cầu kiểm tra để hiển thị chi phí sẽ phát sinh nếu đó là yêu cầu thông thường. |
X-Credits-Charged
|
Trả lại với tất cả các yêu cầu để hiển thị chi phí phát sinh. Luôn luôn 0 cho các yêu cầu kiểm tra. |
POST
https://api.vectorizer.ai/api/v1/vectorize
Để tạo vector cho một hình ảnh, bạn tải lên một tệp HTTP POST chuẩn. Hãy ghi nhớ rằng Loại-Nội Dung phải là multipart/form-data
khi tải các tệp nhị phân lên.
Bảng dưới đây bố trí tất cả các thông số API trong một mẫu làm việc thử nó ngay. Mỗi thông số có một mô tả chính, nhưng hãy chắc chắc đến kiểm tra Tài Liệu Tùy Chọn Đầu Ra chi tiết.
POST
https://api.vectorizer.ai/api/v1/download
Điểm cuối này cho phép bạn:
Tải xuống kết quả sản xuất đầy đủ sau khi gọi API xem trước.
We include an X-Receipt
header in the response so you can download additional output formats at the reduced download format rate afterwards.
Tải xuống nhiều định dạng đầu ra cho cùng một hình ảnh và các tùy chọn xử lý ở tốc độ định dạng tải xuống giảm và không cần phải vectơ hóa tất cả chúng từ đầu.
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.
Thông thường không cần phải gọi điểm cuối này. Nó được cung cấp để bạn có thể xóa hình ảnh trước khi hết thời gian lưu giữ. Xóa hình ảnh sớm không hoàn lại tiền cho những ngày lưu trữ còn lại.
Các Thuộc Tính Phản Hồi |
|
---|---|
success |
|
Example Response
{ "success" : true }
GET
https://api.vectorizer.ai/api/v1/account
Lấy thông tin cơ bản về tài khoản của bạn như tình trạng đăng ký và số điểm còn lại của bạn.
Các tham số |
|
---|---|
Không Có |
Các Thuộc Tính Phản Hồi |
|
---|---|
subscriptionPlan |
Gói đăng hiện mà hiện nay bạn được đăng ký cho hoặc 'không'/. |
subscriptionState |
Tình trạng đăng ký hiện nay của bạn ('hoạt động hoặc 'Quá hạn') hoặc đã kết thúc nếu không có đăng ký. |
credits |
Số điểm API còn lại trong tài khoản của bạn. 0 nếu hiện tại không có đăng ký hoặc đã đăng ký chương trình không phải API. Có thể rất nhỏ, thế nên hãy chắc chắn phân tích là Gấp Đôi. |
Hãy dùng thử
Người dùng = id API, Hộ chiếu = Bí mật API
cURL
$ curl "https://api.vectorizer.ai/api/v1/account" \ -u vkyc67kqa27yidd:[secret]
Example Response
{ "subscriptionPlan" : "none", "subscriptionState" : "ended", "credits" : 0 }
Ngày | Thay đổi |
---|---|
4 thg 11, 2024 |
Added processing.shapes.min_area_px .
|
1 thg 10, 2024 | Đã thêm một chatbot AI để hỗ trợ tích hợp với API. |
23 thg 9, 2024 | Mở rộng đáng kể API để cho phép nhiều chế độ hoạt động hơn. Đã thêm Mã thông báo hình ảnh, Biên lai, tiêu đề phí cho mỗi cuộc gọi và các điểm cuối Tải xuống và Xóa. |
11 thg 6, 2024 |
Đã thêm processing.palette
|
4 thg 3, 2024 | Phần phụ về thời gian chờ./// |
24 thg 1, 2024 | Đã bổ sung đầu cuối Trạng Thái Tài Khoản. Đã bổ sung các lỗi API gần đây vào trang Tài Khoản. Đã bổ sung danh sách tất các các phản hồi lỗi API. |
16 thg 1, 2024 | Đã ghi nhận Lỗi Kiểu Dữ Liệu JSON. |
3 thg 10, 2023 |
Được làm rõ là output.gap_filler.enabled=true dẫn đến nhiều màu ở kết quả hơn được yêu cầu trong processing.max_colors .
|
20 thg 9, 2023 |
Đã thêm mode
|
1 thg 8, 2023 |
Đã thêm một nhóm tùy chọn kích cỡ ảnh đầu ra đầy đủ chức năng có các tùy chọn sau: 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 , và output.size.output_dpi . Đã thêm nhóm tùy chọn ảnh đầu ra bitmap với một tùy chọn: output.bitmap.anti_aliasing_mode .
|
7 thg 6, 2023 |
Đã thêm processing.max_colors
|
31 thg 5, 2023 | Đã mở rộng nhiều các thông số API. Đã cập nhật đầu cuối API. |
10 thg 3, 2023 | Phát hành lần đầu. |