Files
SnapOtter/apps/docs/vi/tools/image/smart-crop.md
T
SnapOtterandGitHub 4963ab3bbd feat(docs-i18n): translate all documentation into 20 languages
All 181 docs markdown files translated into 20 languages (apps/docs/<locale>/**). Companion to the i18n code PR; admin-merged because the file count exceeds GitHub's per-PR CI trigger limit. Validated by pnpm i18n:check (all surfaces, 0 stale/missing) and a clean all-locale docs build.
2026-07-11 13:52:47 +08:00

4.3 KiB

description, i18n_source_hash, i18n_provenance, i18n_output_hash
description i18n_source_hash i18n_provenance i18n_output_hash
Cắt ảnh nhận biết chủ thể, khuôn mặt và entropy để đóng khung ảnh thông minh bằng Sharp và AI phát hiện khuôn mặt. acbe1439c6d8 human 61a1c1077782

Smart Crop

Cắt thông minh nhận biết chủ thể, nhận biết khuôn mặt, hoặc dựa trên trim. Sử dụng các chiến lược attention/entropy của Sharp và AI phát hiện khuôn mặt để đóng khung thông minh.

API Endpoint

POST /api/v1/tools/image/smart-crop

Xử lý: Bất đồng bộ (trả về 202, poll /api/v1/jobs/{jobId}/progress để lấy trạng thái qua SSE)

Gói mô hình: face-detection (200-300 MB) - chỉ bắt buộc cho chế độ face

Tham số

Tham số Kiểu Bắt buộc Mặc định Mô tả
file file - Tệp ảnh (multipart)
mode string Không "subject" Chế độ cắt: subject, face, trim. (Các giá trị cũ attentioncontent ánh xạ sang subjecttrim)
strategy string Không "attention" Chiến lược cho chế độ subject: attention hoặc entropy
width integer Không - Chiều rộng đích tính bằng pixel
height integer Không - Chiều cao đích tính bằng pixel
padding integer Không 0 Phần trăm khoảng đệm quanh chủ thể (0-50)
facePreset string Không "head-shoulders" Preset đóng khung khuôn mặt: closeup, head-shoulders, upper-body, half-body
sensitivity number Không 0.5 Độ nhạy phát hiện khuôn mặt (0-1)
threshold integer Không 30 Ngưỡng chế độ trim để phát hiện nền (0-255)
padToSquare boolean Không false Đệm kết quả đã trim thành hình vuông
padColor string Không "#ffffff" Màu nền cho phần đệm
targetSize integer Không - Kích thước đích cho đầu ra đã đệm (pixel)
quality integer Không - Chất lượng đầu ra (1-100)

Ví dụ Request

curl -X POST http://localhost:1349/api/v1/tools/image/smart-crop \
  -F "file=@portrait.jpg" \
  -F 'settings={"mode":"face","width":1080,"height":1080,"facePreset":"head-shoulders"}'

Response

Response ban đầu (202 Accepted)

{
  "jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "async": true
}

Tiến trình (SSE tại /api/v1/jobs/{jobId}/progress)

event: progress
data: {"phase":"processing","percent":50}

Kết quả cuối cùng (qua SSE)

{
  "phase": "complete",
  "percent": 100,
  "result": {
    "jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "downloadUrl": "/api/v1/download/{jobId}/portrait_smartcrop.jpg",
    "originalSize": 500000,
    "processedSize": 320000
  }
}

Các chế độ

Chế độ Subject

Sử dụng chiến lược attention hoặc entropy của Sharp để tìm vùng thú vị nhất về mặt thị giác và cắt xung quanh vùng đó.

Chế độ Face

Phát hiện khuôn mặt bằng AI, sau đó đóng khung phần cắt quanh các khuôn mặt được phát hiện bằng facePreset được chỉ định. Chuyển về chế độ subject (chiến lược attention) nếu không phát hiện khuôn mặt nào.

Chế độ Trim

Loại bỏ viền/nền đồng nhất khỏi ảnh. Tùy chọn đệm kết quả thành hình vuông với màu nền và kích thước đích được chỉ định.

Ghi chú

  • Công cụ này dùng factory createToolRoute với executionHint: "long", nên nó trả về 202 với tiến trình SSE.
  • Chế độ face yêu cầu gói mô hình face-detection (200-300 MB).
  • Chế độ subject và trim hoạt động mà không cần gói mô hình AI nào.
  • facePreset quyết định mức độ chặt của phần cắt quanh các khuôn mặt được phát hiện: closeup là chặt nhất, half-body là rộng nhất.
  • Nếu không chỉ định width/height, mặc định là 1080x1080.