> [Site index](https://perfectvector.com/llms.txt) — available pages and descriptions.

# แปลงภาพเป็นเวกเตอร์ด้วย API ทีละชุดและทำต่อได้

> แปลงภาพหลายไฟล์ผ่าน API ด้วยคิวที่บันทึกลงดิสก์ เก็บ ID การแปลง จัดการไฟล์ที่ล้มเหลว และทำต่อโดยไม่ส่งงานที่เสร็จแล้วซ้ำ

Source: https://perfectvector.com/th/blog/batch-vectorize-images-api

Language: th
Author: Jay
Published: 2026-11-10T08:00:00+09:00

หากต้องการแปลงภาพหลายไฟล์ด้วย API ให้ใส่ต้นฉบับแต่ละไฟล์ลงในคิวและบันทึกความคืบหน้าก่อนไปไฟล์ถัดไป ใน PerfectVector API v1 โปรแกรมประมวลผลของคุณดูแลคิวเอง API รับหนึ่งภาพต่อคำขอ และตามค่าเริ่มต้นให้แปลงจริงพร้อมกันได้หนึ่งรายการต่อบัญชี [ข้อจำกัด PerfectVector API](https://perfectvector.com/docs/api/limits)

## สร้างรายการคิวให้ภาพแต่ละไฟล์

เริ่มจากสำเนาต้นฉบับที่ไม่เปลี่ยนแปลงและโฟลเดอร์ผลลัพธ์แยก ตัวอย่างใช้โปรแกรมประมวลผลหนึ่งตัว ฐานข้อมูล SQLite ในเครื่อง และโฟลเดอร์ PNG, JPEG หรือ WebP แบบเฟรมเดียว อ่าน[ข้อจำกัดไฟล์ของ API](https://perfectvector.com/docs/api/limits)ก่อนเพิ่มไฟล์ลงคิว ใช้พาธผลลัพธ์ที่ไม่ซ้ำเพื่อไม่ให้ต้นฉบับสองไฟล์ชื่อ `logo.png` เขียนทับกัน

บันทึกฟิลด์ต่อไปนี้พร้อมกันก่อนอัปโหลดครั้งแรก

| ฟิลด์                 | สิ่งที่ต้องเก็บ                                                                                 |
| --------------------- | ----------------------------------------------------------------------------------------------- |
| ต้นฉบับ               | พาธคงที่หรือเวอร์ชันออบเจ็กต์ พร้อมค่าแฮชของไบต์ต้นฉบับ                                         |
| คีย์คำขอ              | คีย์ป้องกันการส่งซ้ำที่ระบุว่าคำขอไหนเป็นการส่งซ้ำของงานเดิม บันทึกเวลาที่ลอง POST ครั้งแรกด้วย |
| ID การแปลง            | ID รูปแบบ `vec_…` ของ API บันทึกทันทีที่ได้รับ                                                  |
| ผลลัพธ์               | พาธปลายทางในเครื่องที่ไม่ซ้ำและสถานะคิวล่าสุดที่ยืนยันแล้ว                                      |
| รายละเอียดความล้มเหลว | รหัสปัญหาจาก API, ID คำขอ หรือข้อผิดพลาดของการแปลง หากมี                                        |

คอมมิตรายการคิวก่อนส่ง POST หาก API รับไฟล์แล้วแต่การเชื่อมต่อหลุดก่อนได้ ID คุณยังมีคีย์เดิมให้ใช้ PerfectVector รู้จักคีย์นั้นเป็นเวลา 24 ชั่วโมงนับจากคำขอแรกในบัญชีและโหมดเดิม เมื่อส่งซ้ำ ให้ใช้ข้อมูลไบต์และตัวเลือกเดิมทุกอย่าง [การป้องกันการส่งซ้ำของ PerfectVector](https://perfectvector.com/docs/api/idempotency)

**ภาพประกอบขั้นตอน**

![ชุดภาพแรสเตอร์ที่ติดป้ายเชื่อมกับรายการแปลงที่บันทึกไว้แล้วไปยัง SVG ลูกศรเริ่มใหม่ชี้กลับมาที่รายการเดิม](https://perfectvector.com/blog/batch-vectorize-images-api/workflow.webp)

*บันทึก ID การแปลงก่อนดาวน์โหลด หากงานหยุดกลางทาง ให้ใช้ ID นั้นทำต่อ*

## ส่ง ตรวจสถานะ และบันทึกทีละรายการ

ส่ง POST แบบ multipart ไปยัง `/v1/vectorizations` โดยใส่ภาพในฟิลด์ `image` และคีย์ของแถวในเฮดเดอร์ `Idempotency-Key` ใช้ `Prefer: respond-async` เพื่อให้คำขอส่งงานจบเร็ว บันทึก ID จากผลตอบกลับที่สำเร็จก่อนเริ่มตรวจสถานะ `202` หมายถึงการแปลงยังไม่เสร็จ ส่วน `201` อาจเป็นรายการที่แปลงสำเร็จหรือล้มเหลว จึงต้องอ่านสถานะใน JSON [การรอและงานอะซิงโครนัสของ PerfectVector](https://perfectvector.com/docs/api/waiting-and-async)

ตารางนี้แสดงลำดับการตัดสินใจของโปรแกรมประมวลผล สถานะคิวอย่าง `saved` เป็นชื่อที่คุณกำหนดเอง ส่วน API คืนสถานะอย่าง `processing` และ `succeeded`

| รายการคิวบนดิสก์              | ขั้นตอนถัดไป                                                                                                                   |
| ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------ |
| รายการใหม่ที่บันทึกคีย์แล้ว   | อัปโหลดไบต์เดิมและบันทึก ID การแปลงที่ได้รับ                                                                                   |
| ไม่ทราบผลการส่งและยังไม่มี ID | ส่งไฟล์เดิมด้วยคีย์ที่เก็บไว้ภายในช่วงที่ส่งซ้ำได้ หากเลยช่วงแล้ว ให้ทำเครื่องหมายรอตรวจสอบก่อนเริ่มรายการใหม่ที่อาจเสียเครดิต |
| บันทึก ID การแปลงแล้ว         | ตรวจ ID เดิม เว้นช่วงประมาณสองวินาทีระหว่างการตรวจ และรอตามที่ระบบจำกัดอัตราคำขอระบุ                                           |
| แปลงสำเร็จแต่ไม่มีไฟล์        | ดาวน์โหลดผล ตรวจ `image/svg+xml` เขียนลงไฟล์ชั่วคราวแล้วเปลี่ยนชื่อเป็นพาธปลายทาง จากนั้นทำเครื่องหมายว่าบันทึกแล้ว            |
| บันทึกแล้ว                    | ข้าม POST หากไฟล์หาย ให้ลองดึงผลเดิมขณะที่ลิงก์ยังใช้ได้                                                                       |
| ถูกปฏิเสธหรือล้มเหลว          | บันทึกปัญหา HTTP หรือข้อผิดพลาดสุดท้าย แก้ต้นฉบับที่ผิดก่อนส่งเป็นรายการใหม่                                                   |

หาก POST ได้ `429` หรือ `503` ให้รอตาม `Retry-After` แล้วใช้ภาพ ตัวเลือก และคีย์เดิมภายในช่วง 24 ชั่วโมง หากได้ `too_many_in_flight` ให้รอรายการจริงที่กำลังทำอยู่ให้เสร็จด้วย เมื่อมี ID การแปลง ให้ตรวจ ID ก่อนส่งอีกครั้ง หากยืนยันแล้วว่าสถานะสุดท้ายเป็น `failed` พร้อม `timeout` หรือ `provider_unavailable` ต้องใช้คีย์ใหม่หากจะลองอีกครั้ง รอให้ผู้ให้บริการกลับมาในกรณีหลัง ส่วนการหมดเวลารอของไคลเอนต์ยังไม่บอกผลสุดท้าย ให้ใช้ ID เดิมหรือส่งซ้ำด้วยคีย์เดิมในช่วงที่กำหนด [ข้อผิดพลาด PerfectVector API](https://perfectvector.com/docs/api/errors)

หลังเริ่มใหม่ โปรแกรมตรวจสถานะหรือดาวน์โหลดซ้ำได้โดยไม่เริ่มการแปลงใหม่ ดาวน์โหลดและเก็บ SVG แต่ละไฟล์ที่สำเร็จก่อนไปแถวถัดไป ผลลัพธ์ API หมดอายุ 24 ชั่วโมงหลังการแปลงเสร็จ [ผลลัพธ์และการดาวน์โหลด PerfectVector](https://perfectvector.com/docs/api/results)

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

```text
for each queue row in a stable order:
    if the row is rejected or its saved SVG is still on disk:
        continue
    if the row has no conversion ID:
        verify source bytes match the stored digest
        if an earlier POST is uncertain and the replay window expired:
            flag the row for review and continue
        POST with the stored key and original bytes and options
        if the response is a permanent input rejection:
            commit the error and continue
        if the POST times out or the service requests a retry:
            keep the same key, record the retry time and stop this run
        commit the returned conversion ID
        pause here when testing recovery after a commit
    GET status by conversion ID, waiting between pending responses
    if conversion failed:
        commit its error and continue
    download the existing result and check the SVG media type
    write to a temporary file and rename it to the output path
    commit the saved state
```

## ทดสอบเริ่มใหม่ด้วยไฟล์สามไฟล์

ใช้โลโก้ PNG ขนาดเล็กสองไฟล์และ PNG ที่เสียหายหนึ่งไฟล์ ใส่ไฟล์เสียไว้โดยตั้งใจเพื่อดูว่าคิวยังไปต่อหลังถูกปฏิเสธหรือไม่ เมื่อใช้คีย์ทดสอบ ไฟล์ที่ใช้ได้ทั้งสองควรได้ SVG ตัวอย่าง ส่วนไฟล์เสียควรไม่ผ่านการตรวจและไม่มีไฟล์ในโฟลเดอร์ผลลัพธ์ โหมดทดสอบคืน SVG ตัวอย่างเดียวกันสำหรับสองไฟล์ที่ใช้ได้ [โหมดทดสอบ PerfectVector](https://perfectvector.com/docs/api/test-mode)

1. ให้ไฟล์แรกถึงสถานะ `saved` หยุดโปรแกรมหลังเขียน ID ของไฟล์ที่ใช้ได้ไฟล์ที่สอง แต่ก่อนบันทึกผล
2. เริ่มโปรแกรมใหม่ ยืนยันว่าข้ามไฟล์แรกและดาวน์โหลดไฟล์ที่สองด้วย ID การแปลงเดิม
3. ตรวจว่าไฟล์เสียปรากฏในรายงานความล้มเหลวพร้อมรหัสปัญหา และไม่มี SVG สำหรับไฟล์นั้น
4. รันโปรแกรมอีกครั้ง ตรวจว่าไฟล์ทั้งสองยังอยู่และไม่มีการส่งรายการที่สำเร็จไปแล้วอีก

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

## คำถามที่พบบ่อย

### ส่งทุกไฟล์ในคำขอ API เดียวได้ไหม

PerfectVector API v1 รับหนึ่งภาพต่อ POST ส่งงานเป็นหลายคำขอแยกกัน สำหรับงานจริง ให้ทำตามขีดจำกัดของบัญชีและรอให้รายการปัจจุบันเสร็จก่อนส่งรายการถัดไป [ข้อจำกัด PerfectVector API](https://perfectvector.com/docs/api/limits)

### ถ้า SVG หมดอายุแล้วควรทำอย่างไร

หากเคยดาวน์โหลด ให้ใช้ SVG ที่เก็บไว้ มิฉะนั้นให้ตรวจสถานะการแปลงแล้วตัดสินใจว่าจะเริ่มรายการใหม่หรือไม่ การแปลงจริงรายการใหม่อาจใช้อีกหนึ่งเครดิตหากสำเร็จ [ผลลัพธ์และการดาวน์โหลด PerfectVector](https://perfectvector.com/docs/api/results)

## แหล่งอ้างอิง

1. [PerfectVector — ข้อจำกัด](https://perfectvector.com/docs/api/limits) — การตรวจไฟล์และจำนวนงานพร้อมกันเริ่มต้นของบัญชี
2. [PerfectVector — การป้องกันการส่งซ้ำ](https://perfectvector.com/docs/api/idempotency) — ขอบเขตคีย์ ช่วงที่ส่งซ้ำได้ และอินพุตที่ต้องตรงกัน
3. [PerfectVector — การรอและงานอะซิงโครนัส](https://perfectvector.com/docs/api/waiting-and-async) — การส่งแบบอะซิงโครนัสและตรวจสถานะ
4. [PerfectVector — ผลลัพธ์](https://perfectvector.com/docs/api/results) — การดาวน์โหลด ความล้มเหลว และวันหมดอายุ
5. [PerfectVector — โหมดทดสอบ](https://perfectvector.com/docs/api/test-mode) — การตรวจอัปโหลดและผลลัพธ์ที่คีย์ทดสอบใช้ยืนยันได้
6. [PerfectVector — ข้อผิดพลาด](https://perfectvector.com/docs/api/errors) — การรอตาม Retry-After สถานะล้มเหลว และกรณีที่ต้องใช้คีย์ใหม่

***

[รับคีย์ทดสอบจากหน้า PerfectVector API](https://perfectvector.com/th/api) แล้วลองใช้ต้นฉบับของคุณสามไฟล์ ตรวจว่าทุกแถวที่สำเร็จมี SVG บนดิสก์ และเมื่อเริ่มใหม่ไม่มีการส่งแถวที่เสร็จแล้ว

## Explore

- [Read the HTML article](https://perfectvector.com/th/blog/batch-vectorize-images-api)
- [แปลงชุดภาพด้วย PNG2SVG: ตรวจ ZIP ที่ดาวน์โหลด](https://perfectvector.com/th/blog/png2svg-batch-convert.md)
- [แปลงภาพทั้งโฟลเดอร์เป็น SVG ด้วย Claude Code](https://perfectvector.com/th/blog/batch-vectorize-images-claude-code-mcp.md)
- [Product facts](https://perfectvector.com/product-facts.md)
- [FAQ](https://perfectvector.com/faq.md)
- [Pricing and credits](https://perfectvector.com/pricing.md)
