This page was machine-translated. Spotted a mistake?Help improve it.
Skip to content

GIF Tools

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

API Endpoint

POST /api/v1/tools/image/gif-tools

Parameters

Common Parameters

ParameterTypeRequiredDefaultDescription
modestringNo"resize"โหมดการทำงาน: resize, optimize, speed, reverse, extract, rotate
loopnumberNo0จำนวนรอบการวนซ้ำสำหรับ GIF ที่ได้ (0 = ไม่จำกัด, 1-100 = จำนวนรอบที่จำกัด)

Resize Mode Parameters

ParameterTypeRequiredDefaultDescription
widthintegerNo-ความกว้างเป้าหมายเป็นพิกเซล (1 ถึง 16384)
heightintegerNo-ความสูงเป้าหมายเป็นพิกเซล (1 ถึง 16384)
percentagenumberNo-ปรับสัดส่วนตามเปอร์เซ็นต์ (1 ถึง 500) แทนที่ width/height หากตั้งค่า

Optimize Mode Parameters

ParameterTypeRequiredDefaultDescription
colorsnumberNo256จำนวนสีสูงสุดในจานสี (2 ถึง 256)
dithernumberNo1.0ความเข้มของ dithering (0 ถึง 1 โดย 0 ปิดการใช้งาน dithering)
effortnumberNo7ระดับความพยายามในการปรับให้เหมาะสม (1 ถึง 10 ยิ่งสูง = ช้าลงแต่เล็กลง)

Speed Mode Parameters

ParameterTypeRequiredDefaultDescription
speedFactornumberNo1.0ตัวคูณความเร็ว (0.1 ถึง 10) ค่า > 1 เร่งความเร็ว, < 1 ทำให้ช้าลง

Extract Mode Parameters

ParameterTypeRequiredDefaultDescription
extractModestringNo"single"โหมดการแยก: single, range, all
frameNumbernumberNo0ดัชนีเฟรมที่จะแยกในโหมด single (เริ่มจาก 0)
frameStartnumberNo0ดัชนีเฟรมเริ่มต้นสำหรับโหมด range (เริ่มจาก 0)
frameEndnumberNo-ดัชนีเฟรมสิ้นสุดสำหรับโหมด range (เริ่มจาก 0, รวมค่านี้ด้วย)
extractFormatstringNo"png"รูปแบบสำหรับเฟรมที่แยก: png, webp

Rotate Mode Parameters

ParameterTypeRequiredDefaultDescription
anglenumberNo-มุมการหมุน: 90, 180, หรือ 270 องศา
flipHbooleanNofalseพลิกแนวนอน
flipVbooleanNofalseพลิกแนวตั้ง

Example Requests

Resize

bash
curl -X POST http://localhost:1349/api/v1/tools/image/gif-tools \
  -F "[email protected]" \
  -F 'settings={"mode":"resize","percentage":50}'

Optimize

bash
curl -X POST http://localhost:1349/api/v1/tools/image/gif-tools \
  -F "[email protected]" \
  -F 'settings={"mode":"optimize","colors":128,"effort":9}'

Speed Up

bash
curl -X POST http://localhost:1349/api/v1/tools/image/gif-tools \
  -F "[email protected]" \
  -F 'settings={"mode":"speed","speedFactor":2.0}'

Extract Single Frame

bash
curl -X POST http://localhost:1349/api/v1/tools/image/gif-tools \
  -F "[email protected]" \
  -F 'settings={"mode":"extract","extractMode":"single","frameNumber":5,"extractFormat":"png"}'

Example Response

json
{
  "jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/animation.gif",
  "originalSize": 2345678,
  "processedSize": 1234567
}

Info Sub-Route

POST /api/v1/tools/image/gif-tools/info

คืนค่าเมทาดาทาเกี่ยวกับ GIF เคลื่อนไหวโดยไม่ประมวลผล

Info Request

bash
curl -X POST http://localhost:1349/api/v1/tools/image/gif-tools/info \
  -F "[email protected]"

Info Response

json
{
  "width": 480,
  "height": 320,
  "pages": 24,
  "delay": [100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100],
  "loop": 0,
  "fileSize": 2345678,
  "duration": 2400
}

Notes

  • ใช้ factory createToolRoute มาตรฐานสำหรับ endpoint การประมวลผลหลัก
  • endpoint ข้อมูลต้องการเพียงการอัปโหลดไฟล์เท่านั้น (ไม่ต้องมีการตั้งค่า)
  • ในโหมด resize หากมีการระบุ percentage จะมีความสำคัญเหนือ width/height การปรับขนาดใช้ fit: inside เพื่อรักษาสัดส่วนภาพ
  • ในโหมด speed ความล่าช้าของเฟรมจะถูกหารด้วย speed factor ความล่าช้าต่ำสุดต่อเฟรมคือ 20ms (ข้อจำกัดของ GIF spec)
  • ในโหมด reverse พารามิเตอร์ speedFactor ก็ใช้ได้เช่นกันเพื่อปรับความเร็วพร้อมกับการย้อนกลับ
  • ในโหมด extract ที่มี range หรือ all ผลลัพธ์จะเป็นไฟล์ ZIP ที่มีเฟรมแต่ละเฟรม
  • ในโหมด rotate แต่ละเฟรมจะถูกประมวลผลทีละเฟรมและประกอบกลับเป็นภาพเคลื่อนไหว
  • พารามิเตอร์ loop ควบคุมว่า GIF ที่ได้จะวนซ้ำกี่ครั้ง ใช้ 0 สำหรับการวนซ้ำไม่จำกัด
  • ฟิลด์ duration ในการตอบกลับข้อมูลคือระยะเวลาภาพเคลื่อนไหวทั้งหมดในหน่วยมิลลิวินาที