API การปรับภาพให้เป็นเวกเตอร์

Vectorizer.AI มี API การแปลงบิตแมปเต็มรูปแบบ API จะแปลงพิกเซลเป็นเวกเตอร์อย่างครบถ้วนโดยอัตโนมัติ และมีความเที่ยงตรงเหนือชั้นกว่าเครื่องมืออื่นในระดับเดียวกัน

รับคีย์ API

เริ่มใช้งานได้ทันที

โพสต์ภาพบิตแมปและรอรับผลลัพธ์ที่เป็นภาพเวกเตอร์กลับมา

$ curl https://th.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://th.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://th.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://th.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://th.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://th.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://th.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://th.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://th.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://th.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://th.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://th.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://th.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://th.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 และทดสอบได้ฟรี โดยไม่จำเป็นต้องสมัครสมาชิก

เพียงแค่ใช้ mode=test เพื่อการพัฒนา คุณสามารถประเมินคุณภาพผลลัพธ์ได้โดยใช้เว็บแอปแบบโต้ตอบที่หน้าหลัก

ผลลัพธ์ที่พร้อมออกสื่อต้องอาศัยการเป็นสมาชิก และแต่ละรายการต้องใช้ 1.00 เครดิต

นอกจากนี้ เรายังเสนอผลลัพธ์ตัวอย่างที่คุณสามารถแสดงให้ผู้ใช้ปลายทางเห็นก่อนตัดสินใจซื้อได้ด้วย

ภาพตัวอย่างคือภาพ PNG ที่มีขนาดใหญ่กว่าภาพอินพุตถึง 4 เท่า และมีลายน้ำกำกับให้เห็น ในราคาภาพละ 0.20 0.20 เครดิต

เพียงแค่ใช้ mode=preview เพื่อรับภาพตัวอย่าง

โปรดดูหน้าการกำหนดราคาสำหรับแผนบริการสมาชิก

การรับรองความถูกต้องและการรักษาความปลอดภัย

API ใช้ การรับรองความถูกต้องเบื้องต้นของการเข้าถึง HTTP แบบมาตรฐาน คำร้องขอทั้งหมดถึง API ต้องดำเนินการผ่าน HTTPS และมีข้อมูลประจำตัว API ของคุณ โดยมี API Id เป็นผู้ใช้ และรหัสลับ API เป็นรหัสผ่าน

ไลบรารีไคลเอ็นต์ http ของคุณต้องรองรับ การบ่งชี้ชื่อเซิร์ฟเวอร์ (SNI) จึงจะส่งคำขอได้สำเร็จ หากคุณได้รับข้อผิดพลาดการสื่อสารที่ผิดปกติ ก็น่าจะเป็นเพราะเหตุนี้มากที่สุด

การจำกัดอัตรา

การใช้งาน API มีอัตราที่จำกัด โดยเผื่อค่าไว้กว้างและไม่มีขอบเขตบนที่เคร่งครัด

ในระหว่างการดำเนินการที่ผู้ใช้ปลายทางกระทำตามปกตินั้น มีโอกาสน้อยที่คุณจะประสบกับอัตราที่จำกัด เพราะการใช้งานมีแนวโน้มที่จะขึ้น ๆ ลง ๆ ในลักษณะที่บริการจัดการได้อย่างเรียบร้อย

อย่างไรก็ตาม ในกรณีของชุดงาน เราขอแนะนำให้เริ่มต้นด้วยชุดกิจกรรมสูงสุด 5 ชุด โดยเพิ่มใหม่ 1 ชุดทุก ๆ 5 นาที จนกว่าคุณจะไปถึงระดับการทำงานแบบขนานตามที่ต้องการ กรุณาแจ้งให้เราทราบก่อนที่คุณจะเริ่มงาน หากต้องการชุดกิจกรรมมากกว่า 100 ชุดพร้อมกัน

หากคุณส่งคำขอมากเกินไป คุณจะเริ่มได้รับผลตอบกลับ 429 Too Many Requests เมื่อเกิดกรณีเช่นนี้ขึ้น คุณควรปรับใช้กลยุทธ์สุ่มรอเวลาแบบเส้นตรง : ในผลตอบกลับดังกล่าวครั้งแรก รอ 5 วินาที ก่อนส่งคำขอถัดไป ในผลตอบกลับ 429 ที่ต่อเนื่องกันครั้งที่สอง รอ 2*5=10 วินาที ก่อนส่งคำขอถัดไป ส่วนครั้งที่สาม จะรอ 3*5=15 วินาที ฯลฯ

คุณสามารถรีเซ็ตตัวนับการสุ่มรอเวลาหลังจากคำขอประสบผลสำเร็จ และคุณควรนำการสุ่มรอเวลาไปใช้กับแต่ละชุดกิจกรรม (กล่าวคือ ชุดกิจกรรมควรทำหน้าที่โดยอิสระไม่ขึ้นต่อกันและกัน)

การหมดเวลา

แม้ว่าโดยปกติแล้วคำขอ API จะเสร็จสมบูรณ์ภายในเวลาไม่กี่วินาที แต่ก็เป็นไปได้ที่อาจต้องประสบกับเวลาดำเนินการที่นานขึ้นในช่วงที่มีการโหลดข้อมูลเพิ่มขึ้นอย่างรวดเร็วชั่วครู่

เพื่อให้แน่ใจว่าไลบรารีไคลเอนต์ของคุณจะไม่ยุติคำขอ API ก่อนกำหนด ควรกำหนดค่าให้มีการหมดเวลาขณะไม่ได้ใช้งานไว้อย่างน้อย 180 วินาที

ออบเจ็กต์ JSON ของข้อผิดพลาด

เราใช้สถานะ HTTP แบบปกติ เพื่อบ่งชี้ความสำเร็จหรือความล้มเหลวของคำขอ API และรวมถึงรายละเอียดข้อผิดพลาดที่สำคัญในออบเจ็กต์ JSON ที่ผิดพลาดและถูกส่งคืน

เราพยายามอยู่เสมอที่จะส่งคืนออบเจ็กต์ JSON ที่ผิดพลาดพร้อมด้วยคำขอใด ๆ ที่เป็นปัญหา อย่างไรก็ตาม ในทางทฤษฎี มีความเป็นไปได้เสมอที่เซิร์ฟเวอร์จะเกิดความล้มเหลวภายใน ซึ่งนำไปสู่ผลตอบกลับข้อผิดพลาดที่ไม่ใช่ JSON

ลักษณะเฉพาะ

statusในที่นี้ แสดงสถานะ HTTP ของผลตอบกลับซ้ำอีก เพื่อช่วยในการแก้จุดบกพร่อง
codeรหัสข้อผิดพลาดภายในของ Vectorizer.AI
messageข้อความแสดงข้อผิดพลาดที่มนุษย์สามารถอ่านได้ มีจุดประสงค์เพื่อช่วยในการแก้จุดบกพร่อง

หากสถานะ HTTP สำหรับคำขอของคุณคือ 200 แสดงว่าจะไม่มีการส่งคืนออบเจ็กต์ JSON ที่ผิดพลาด และคุณสามารถสรุปได้ว่า คำขอนั้นสื่อสารได้สำเร็จในวงกว้าง

ไลบรารีไคลเอ็นต์ HTTP บางส่วนทำให้เกิดข้อยกเว้นสำหรับสถานะ HTTP ในช่วง 400-599 คุณจำเป็นจะต้องตรวจจับข้อยกเว้นเหล่านั้นและจัดการตามความเหมาะสม

HTTP Statusความหมาย
200-299

ความสำเร็จ

400-499

มีปัญหาเกิดขึ้นกับข้อมูลที่ให้ไว้ในคำขอ (เช่น พารามิเตอร์ขาดหายไป) กรุณาตรวจสอบข้อความแสดงข้อผิดพลาดเพื่อคิดหาวิธีที่จะจัดการแก้ไข

500-599

ตรวจพบข้อผิดพลาดภายใน Vectorizer.AI กรุณารอสักครู่แล้วลองใหม่อีกครั้ง หากปัญหายังคงมีอยู่ กรุณาส่งอีเมลถึงเรา

ตัวอย่างผลตอบกลับข้อผิดพลาด

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

ข้อผิดพลาด API ล่าสุดแสดงอยู่ในหน้าบัญชีของคุณ เพื่อช่วยให้คุณมีความสะดวกในการแก้จุดบกพร่อง

นอกจากนี้ยังมีรายการการข้อความตอบกลับข้อผิดพลาดทั้งหมดที่ API ส่งกลับ

ปรับให้เป็นเวกเตอร์ POST
https://api.vectorizer.ai/api/v1/vectorize

ในการปรับภาพให้เป็นเวกเตอร์ คุณจะทำการอัปโหลดไฟล์ HTTP POST แบบมาตรฐาน อย่าลืมว่า ประเภท-เนื้อหา ต้องเป็น multipart/form-data เมื่ออัปโหลดไฟล์ไบนารี

ตารางด้านล่างแสดงพารามิเตอร์ทั้งหมดของ API ในแบบฟอร์ม "ลองใช้ตอนนี้" ที่ใช้งานได้ พารามิเตอร์แต่ละตัวมีคำอธิบายสั้น ๆ แต่อย่าลืมอ่านเอกสารที่มีรายละเอียดเกี่ยวกับตัวเลือกเอาต์พุต

พารามิเตอร์

ต้องป้อนภาพอินพุตในแบบใดแบบหนึ่งดังนี้ :


ไบนารี

ไฟล์ไบนารี


สตริง

สตริงที่เข้ารหัสแบบ base64 ขนาดของสตริงต้องไม่เกิน 1 เมกะไบต์ เท่านั้น


สตริง

URL เพื่อเรียกใช้และประมวลผล

ต้องเป็นไฟล์ .bmp, .gif, .jpeg, .png, หรือ .tiff

ขนาดสูงสุดของภาพที่จะอัปโหลด (= ความกว้าง × ความสูง) คือ 33,554,432 พิกเซล, ซึ่งจะลดขนาดลงเป็น input.max_pixels


ข้อมูลคงที่, ค่าเริ่มต้น: production
Value Processing Mode Credits
production

โหมดนี้มีไว้เพื่อใช้ในการผลิตภาพที่พร้อมออกสื่อ และรองรับพารามิเตอร์ทั้งหมด

1.00
preview

โหมดนี้มีไว้เพื่อใช้เมื่อคุณต้องการแสดงภาพตัวอย่างให้ผู้ใช้ปลายทางเห็นก่อนตัดสินใจซื้อ

โดยสร้างผลลัพธ์ที่เป็น PNG ใหญ่ 4 เท่า พร้อมลายน้ำให้เห็นได้ และมองข้ามพารามิเตอร์ที่ขัดแย้งกัน

0.20
test

โหมดนี้มีไว้เพื่อให้นักพัฒนาซอฟต์แวร์ใช้เมื่อผนวกรวมเข้ากับบริการ โดยรองรับพารามิเตอร์ทั้งหมด แต่มีลายน้ำให้เห็นชัดเจน

คุณสามารถใช้ผลลัพธ์สำหรับทดสอบได้ฟรี และไม่จำเป็นต้องเป็นสมาชิกที่ยังไม่หมดอายุ ดังนั้นคุณจึงสามารถผสานรวมกับบริการได้ฟรี

ฟรี

เลขจำนวนเต็ม, 100 ถึง 3145828, ค่าเริ่มต้น: 2097252

ขนาดสูงสุดของภาพอินพุต (= ความกว้าง × ความสูง ในหน่วยพิกเซล) ภาพที่มีขนาดใหญ่กว่านี้จะถูกย่อขนาดลงเป็นขนาดนี้ก่อนการประมวลผล


เลขจำนวนเต็ม, 0 ถึง 256, ค่าเริ่มต้น: 0

จำนวนสีสูงสุดที่จะใช้สำหรับผลลัพธ์

0 หมายถึง ไม่จำกัด 1 และ 2 ทั้งคู่หมายถึง สองสี เช่น ดำ-และ-ขาว N>=2 หมายถึงจำนวนสีตามที่ระบุไว้

โปรดทราบว่าหากใช้ output.gap_filler.enabled=true (ค่าเริ่มต้น) ผลลัพธ์จะมีส่วนผสมของสีที่เลือกไว้ด้วย ปิดใช้งานตัวอุดช่องว่างเพื่อรับผลลัพธ์ที่มีเฉพาะสีที่เลือกไว้เท่านั้น


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

Default:   (empty)

นี่เป็นกลไกที่มีประสิทธิภาพและความยืดหยุ่นสูงมากเพื่อใช้ควบคุมสีในภาพผลลัพธ์

สีที่ตรวจพบในภาพ ซึ่งอยู่ภายในค่าเผื่อของสีในชุดแบบสีใด ๆ จะถูกปรับให้เป็นสีในชุดแบบสีที่ใกล้ที่สุด และจะเปลี่ยนใหม่หากสีในชุดแบบสีนั้นมีการเปลี่ยนใหม่ที่ระบุไว้แล้ว สีที่ไม่ตรงกันจะไม่มีการเปลี่ยนแปลง

ตัวอย่าง

หากต้องการปรับสีที่ตรวจพบให้เป็นสีแดง สีเขียว และสีน้ำเงินที่ใกล้ที่สุด โปรดใช้:

#FF0000; 
#00FF00; 
#0000FF;

หากต้องการลบสีที่ตรวจพบว่าใกล้กับสีแดง สีเขียว และสีน้ำเงิน แต่ปล่อยสีอื่น ๆ ไว้ตามเดิม โปรดใช้:

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

หากต้องการเปลี่ยนสีที่ตรวจพบว่าใกล้กับสีแดงไปเป็นสีเขียว โดยไม่เปลี่ยนแปลงสีอื่น ๆ โปรดใช้:

#FF0000 -> #00FF00 ~ 0.02;

หากต้องการปรับสีใดก็ตามที่ใกล้เคียงกับสีแดง สีเขียว และสีน้ำเงินให้เป็นสีเหล่านั้น แต่ปรับสีอื่น ๆ ทั้งหมดให้เป็นสีดำโปร่งใส (ซึ่งจะลบสีเหล่านั้นออกจากภาพผลลัพธ์) โปรดใช้:

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

สี

การระบุสีจะเป็นไปตามระบบสี CSS พื้นฐาน หากต้องการสีโปร่งใส (บางส่วน) เราขอแนะนำให้ใช้ #RRGGBBAA หากต้องการสีทึบ เราขอแนะนำให้ใช้ #RRGGBB

ผลลัพธ์จะละเว้นสีที่โปร่งใสเต็มที่ เมื่อใช้ร่วมกับความสามารถในการเปลี่ยนสีใหม่ คุณสามารถใช้คุณสมบัตินั้นเพื่อลบสีที่เลือกออกจากภาพผลลัพธ์ได้

คุณสามารถใช้ได้สูงสุด 1,024 สี

ค่าเผื่อ

หน่วยอยู่ในระยะสี ARGB แบบเศษส่วน โดยที่ 1.0 คือระยะห่างจากสีแดงทึบ (#FFFF0000) ถึงสีดำทึบ (#FF000000)

ค่าเผื่อสูงสุดคือ 2.0 ซึ่งเป็นระยะห่างจากสีดำโปร่งใส (#00000000) ถึงสีขาวทึบ (#FFFFFFFF)

ค่าเผื่อเริ่มต้นคือ 2.0 ดังนั้นสีที่ตรวจพบตามค่าเริ่มต้นจะปรับเป็นสีในชุดแบบสีที่ใกล้ที่สุด แม้ว่าจะอยู่ห่างกันก็ตาม คุณสามารถจำกัดการปรับไว้แค่สีในชุดแบบสีแต่ละชุดได้โดยการระบุพิกัดความเผื่อแบบกำหนดเอง

หากคุณคุ้นเคยกับการใช้สีในช่วง 0-255 ให้หารด้วย 255 เพื่อให้ได้ค่าเศษส่วน


ข้อมูลคงที่, ค่าเริ่มต้น: svg

รูปแบบไฟล์เอาต์พุต

ตัวเลือก SVG:


ข้อมูลคงที่, ค่าเริ่มต้น: svg_1_1

ระบุแอตทริบิวต์ที่เป็นเวอร์ชันของ SVG ในแท็ก SVG รายละเอียด


ข้อมูลบูลีน, ค่าเริ่มต้น: false

ขึ้นอยู่กับว่าจะรวมแอตทริบิวต์ที่เป็นขนาดภาพในแท็ก SVG หรือไม่ ถ้าเป็น true โดยปกติโปรแกรมดูภาพจะเรนเดอร์ SVG ในขนาดคงที่ ถ้าเป็น false โดยปกติโปรแกรมดูภาพจะปล่อยให้ SVG ปรับขนาดให้พอดีกับพื้นที่ที่มีอยู่ รายละเอียด


ข้อมูลบูลีน, ค่าเริ่มต้น: false

ถ้าเป็น true เราจะปิดใช้งานตัวเลือกที่ Adobe Illustrator ไม่สามารถนำเข้าได้ รายละเอียด

ตัวเลือก DXF:


ข้อมูลคงที่, ค่าเริ่มต้น: lines_and_arcs

โปรแกรมเปิดไฟล์ DXF มีความสามารถแตกต่างกันไป ตัวเลือกนี้ช่วยให้คุณสามารถจำกัดเอาต์พุตให้อยู่ในรูปแบบภาพทรงเรขาคณิตที่โปรแกรมเปิดไฟล์ DXF ของคุณสามารถรองรับได้ รายละเอียด

ตัวเลือกสำหรับบิตแมป:


ข้อมูลคงที่, ค่าเริ่มต้น: anti_aliased
Value Anti-Aliasing Mode
anti_aliased พิกเซลตามแนวขอบระหว่างรูปทรงจะมีสีที่ผสมกันตามสัดส่วนของพื้นที่พิกเซลที่แต่ละรูปทรงครอบคลุมอยู่
aliased พิกเซลถูกกำหนดให้เป็นสีของรูปทรงที่มีจุดศูนย์กลางทางเรขาคณิตของพิกเซล

ข้อมูลคงที่, ค่าเริ่มต้น: fill_shapes

ระบุลักษณะที่คุณต้องการให้เอาต์พุตมีการลงสีเส้นขอบหรือเติมสีพื้น การลงสีเส้นขอบรอบรูปทรงและการลงสีเส้นขอบระหว่างรูปทรงมีความแตกต่างเล็กน้อย โปรดอ่านคำอธิบายโดยละเอียดในเอกสารประกอบ


ข้อมูลคงที่, ค่าเริ่มต้น: cutouts

กำหนดว่าให้วางรูปทรงไว้ในคัตเอาต์ภายในรูปทรงด้านล่าง (cutouts) หรือวางซ้อนทับกันและกัน (stacked) รายละเอียด


ข้อมูลคงที่, ค่าเริ่มต้น: none
Value Shape grouping
none ไม่มีการจัดกลุ่ม
color ตามสี มีปฏิสัมพันธ์กับ output.shape_stacking
parent ตามรูปทรงที่ล้อมอยู่
layer ตามเลเยอร์ลำดับภาพ
รายละเอียด

ข้อมูลบูลีน, ค่าเริ่มต้น: false

ปรับรูปวงกลม รูปวงรี รูปสี่เหลี่ยม รูปสามเหลี่ยม และรูปดาวที่ระบุไว้ให้เป็นเส้นโค้งธรรมดา รายละเอียด

เส้นโค้ง:


ข้อมูลบูลีน, ค่าเริ่มต้น: true

อนุญาตให้ใช้เส้นโค้งเบซิเยร์แบบจุดควบคุมสามจุดหรือไม่ รายละเอียด


ข้อมูลบูลีน, ค่าเริ่มต้น: true

อนุญาตให้ใช้เส้นโค้งเบซิเยร์แบบจุดควบคุมสี่จุดหรือไม่ รายละเอียด


ข้อมูลบูลีน, ค่าเริ่มต้น: true

ยอมให้ใช้เส้นโค้งวงกลมหรือไม่ รายละเอียด


ข้อมูลบูลีน, ค่าเริ่มต้น: true

ยอมให้ใช้เส้นโค้งวงรีหรือไม่ รายละเอียด


เลขทศนิยม, 0.001 ถึง 1.0, ค่าเริ่มต้น: 0.1

ระยะห่างสูงสุดเป็นพิกเซลระหว่างเส้นโค้งและเส้นที่ประมาณค่า รายละเอียด

ตัวอุดช่องว่าง


ข้อมูลบูลีน, ค่าเริ่มต้น: true

จะแก้ไขจุดบกพร่องในการเรนเดอร์เส้นสีขาวที่พบบ่อยในโปรแกรมดูภาพเวกเตอร์หรือไม่ รายละเอียด


ข้อมูลบูลีน, ค่าเริ่มต้น: false

จะคลิปเส้นขอบตัวอุดช่องว่างหรือไม่ เมื่อ output.shape_stacking=stacked คลิปหรือใช้เส้นขอบแบบไม่ปรับขนาด รายละเอียด


ข้อมูลบูลีน, ค่าเริ่มต้น: true

ขึ้นอยู่กับว่าจะใช้เส้นขอบแบบไม่ปรับขนาดกับตัวอุดช่องว่างหรือไม่ เมื่อ output.shape_stacking=stacked คลิปหรือใช้เส้นขอบแบบไม่ปรับขนาด รายละเอียด


เลขทศนิยม, 0.0 ถึง 5.0, ค่าเริ่มต้น: 2.0

ความกว้างของเส้นขอบตัวอุดช่องว่าง รายละเอียด

รูปแบบของเส้นขอบเมื่อ output.draw_style คือ stroke_shapes หรือ stroke_edges


ข้อมูลบูลีน, ค่าเริ่มต้น: true

จะใช้เส้นขอบแบบไม่ปรับขนาดหรือไม่ รายละเอียด


ข้อมูลบูลีน, ค่าเริ่มต้น: false

ขึ้นอยู่กับว่าจะใช้สีแทนที่หรือสีโดยประมาณของรูปทรงหรือไม่ รายละเอียด


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

สีแทนที่ รายละเอียด


เลขทศนิยม, 0.0 ถึง 5.0, ค่าเริ่มต้น: 1.0

ความกว้างของเส้นขอบ รายละเอียด

ขนาดเอาต์พุต:


เลขทศนิยม, 0.0 ถึง 1000.0

ปัจจัยขนาดแบบเดียวกัน หากระบุไว้ ขนาดนี้จะมีความสำคัญมากกว่า output.size.width และ output.size.height


เลขทศนิยม, 0.0 ถึง 1.0E12

ความกว้างในหน่วยที่ output.size.unit กำหนดไว้ หากระบุแค่ความกว้างหรือความสูงเพียงค่าเดียว ระบบจะคำนวณอีกค่าหนึ่งโดยอัตโนมัติเพื่อรักษาอัตราส่วนกว้างยาวไว้


เลขทศนิยม, 0.0 ถึง 1.0E12

ความกว้างที่ output.size.unit กำหนดไว้ หากระบุแค่ความกว้างหรือความสูงเพียงค่าเดียว ระบบจะคำนวณอีกค่าหนึ่งโดยอัตโนมัติเพื่อรักษาอัตราส่วนกว้างยาวไว้


ข้อมูลคงที่, ค่าเริ่มต้น: none

หน่วยวัดความกว้างและความสูง ในบรรดาหน่วยเหล่านี้ pt, in, cm และ mm เป็นหน่วยทางกายภาพ ส่วน none และ px เป็นหน่วยที่ไม่ใช่กายภาพ ความแตกต่างเหล่านี้มีปฏิสัมพันธ์กับ output.size.input_dpi และ output.size.output_dpi


ข้อมูลคงที่, ค่าเริ่มต้น: preserve_inset

ค่า กฎการปรับขนาด
preserve_inset ปรับขนาดอย่างสม่ำเสมอให้พอดีกับขนาดที่กระชับมากกว่า เพื่อไม่ให้มีส่วนที่ล้นเกิน แต่จะมีพื้นที่ว่างในอีกขนาดหนึ่ง
preserve_overflow ปรับขนาดอย่างสม่ำเสมอให้พอดีกับขนาดที่กระชับน้อยกว่า เพื่อให้มีส่วนที่ล้นเกินขนาดที่กระชับมากกว่า
stretch ปรับขนาดอย่างไม่สม่ำเสมอเพื่อให้พอดีกับความกว้างและความสูงที่ระบุไว้
ในตัวเลือก preserve ใด ๆ ค่า output.size.align_x หรือ output.size.align_y จะควบคุมตำแหน่งในขนาดที่ไม่มีข้อจำกัด


เลขทศนิยม, 0.0 ถึง 1.0, ค่าเริ่มต้น: 0.5

การจัดแนวในแนวนอนสำหรับ output.size.aspect_ratiopreserve_inset หรือ preserve_overflow

ค่า การจัดแนวในแนวนอน
0.0 จัดแนวให้ชิดซ้าย
0.5 กึ่งกลางแนวนอน
1.0 จัดแนวให้ชิดขวา
ค่าใด ๆ ก็ได้ระหว่าง 0.0 ถึง 1.0


เลขทศนิยม, 0.0 ถึง 1.0, ค่าเริ่มต้น: 0.5

การจัดแนวในแนวตั้งสำหรับ output.size.aspect_ratiopreserve_inset หรือ preserve_overflow

ค่า การปรับแนวตามแนวตั้ง
0.0 จัดแนวให้ชิดด้านบนสุด
0.5 กึ่งกลางแนวตั้ง
1.0 จัดแนวให้ชิดด้านล่างสุด
ค่าใด ๆ ก็ได้ระหว่าง 0.0 ถึง 1.0


เลขทศนิยม, 1.0 ถึง 1000000.0

ค่า DPI ของภาพอินพุตจะอ่านจากไฟล์หากมีให้อ่านได้ พารามิเตอร์นี้ยอมให้คุณแทนที่ค่านั้นได้ ค่าที่เป็นผลลัพธ์จะใช้ในการคำนวณขนาดทางกายภาพของภาพอินพุต ซึ่งใช้ในการคำนวณขนาดเอาต์พุตหากมีการระบุหน่วยทางกายภาพไว้ให้เอาต์พุต แต่ไม่ได้ระบุความกว้างหรือความสูงไว้อย่างชัดเจน


เลขทศนิยม, 1.0 ถึง 1000000.0

ค่า DPI ของภาพเอาต์พุต ค่านี้ใช้เพื่อคำนวณขนาดพิกเซลของภาพเอาต์พุตที่เป็นบิตแมปเมื่อระบุหน่วยทางกายภาพไว้

สถานะบัญชี GET
https://api.vectorizer.ai/api/v1/account

ดึงข้อมูลพื้นฐานเกี่ยวกับบัญชีของคุณ เช่น สถานะการสมัครสมาชิกและจำนวนเครดิตที่เหลืออยู่

พารามิเตอร์

ไม่มี

ลักษณะเฉพาะผลตอบกลับ

subscriptionPlan

แผนสมาชิกที่คุณมีอยู่ในขณะนี้ หรือ 'ไม่มี'

subscriptionState

สถานะการเป็นสมาชิกของคุณในขณะนี้ ('ใช้บริการ' หรือ 'ค้างชำระ') หรือ 'สิ้นสุดแล้ว' หากไม่ได้เป็นสมาชิก

credits

จำนวนเครดิต API ที่คงเหลือในบัญชีของคุณ ค่าเท่ากับ 0 ถ้าไม่ได้เป็นสมาชิกในขณะนี้ หรือเป็นสมาชิกแผนบริการที่ไม่ใช่ API ตัวเลขอาจเป็นเศษส่วนก็ได้ ดังนั้นอย่าลืมแยกวิเคราะห์เป็นเลขทศนิยม

ลองใช้ดู

ชื่อผู้ใช้ = API Id, รหัสผ่าน = รหัสลับ API

cURL

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

ตัวอย่างผลตอบกลับ

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

บันทึกการเปลี่ยนแปลง API

วันที่เปลี่ยน
11 มิ.ย. 2024 ได้เพิ่ม processing.palette
4 มี.ค. 2024 เพิ่มหัวข้อเกี่ยวกับการหมดเวลา
24 ม.ค. 2024 เพิ่มจุดหมายของสถานะบัญชี เพิ่มข้อผิดพลาด API ล่าสุดในหน้าบัญชี เพิ่มรายการข้อความตอบกลับข้อผิดพลาด API ทั้งหมด
16 ม.ค. 2024 ออบเจ็กต์ JSON ของข้อผิดพลาดที่จัดทำเอกสารไว้
3 ต.ค. 2023 ชี้แจงว่า output.gap_filler.enabled=true ทำให้มีสีในผลลัพธ์มากกว่าที่ขอไว้ใน processing.max_colors
20 ก.ย. 2023 ได้เพิ่ม mode
1 ส.ค. 2023 เพิ่มกลุ่มตัวเลือกขนาดเอาต์พุตที่มีคุณสมบัติครบถ้วนด้วยตัวเลือกต่อไปนี้: 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 และ output.size.output_dpi เพิ่มกลุ่มตัวเลือกเอาต์พุตบิตแมปด้วยตัวเลือกเดียว: output.bitmap.anti_aliasing_mode
7 มิ.ย. 2023 ได้เพิ่ม processing.max_colors
31 พ.ค. 2023 เพิ่มพารามิเตอร์ API ให้มากขึ้นอีกมาก อัปเดตให้ URL ที่เป็นจุดหมายของ API
10 มี.ค. 2023 ออกเผยแพร่ครั้งแรก
รับคีย์ API