Chuyển Hàng Loạt Ảnh Sang SVG (Batch)
Kéo thả nhiều ảnh vào cùng lúc, chọn engine (VTracer cho màu hoặc Potrace cho đen trắng), và tải về 1 file ZIP chứa toàn bộ SVG đã chuyển. Phù hợp khi bạn có bộ icon 20 file cần vector hoá nhanh.
Tất cả file trong batch sẽ dùng cùng 1 engine này.
Về công cụ Batch Convert
Khi bạn có nhiều ảnh cần chuyển — ví dụ cả bộ icon 20 file, hoặc batch ảnh sản phẩm để làm thumbnail SVG — Batch Convert fan-out N job độc lập vào hàng đợi BullMQ. Mỗi file được xử lý song song (concurrency 2), progress tracking realtime từng file.
Sau khi tất cả hoàn tất, server đóng gói bằng archiver thành 1 ZIP để bạn tải. File gốc bị xoá ngay sau khi worker trace xong, ZIP tồn tại 1 giờ. Tiết kiệm hàng chục lần upload-download lẻ.
- Tối đa 20 file / batch
- 25MB / file, tổng batch không giới hạn cứng
- Fan-out song song vào BullMQ
- Progress realtime từng file
- Download 1 ZIP duy nhất
- Tên file output giữ tên gốc (.svg)
Cách chuyển hàng loạt ảnh sang SVG
- 1
Kéo thả nhiều ảnh
Có thể chọn từng ảnh hoặc thả nguyên folder. Duplicate sẽ tự được đánh số để tránh trùng tên trong ZIP.
- 2
Chọn engine chung
Color nếu toàn bộ là ảnh màu/illustration. Mono nếu toàn bộ là logo/icon đen trắng. Mix thì chia thành 2 batch.
- 3
Bấm chuyển tất cả
N file → N job fan-out. Bạn thấy progress từng file realtime.
- 4
Chờ batch hoàn tất
File to mất 3-30s, file logo nhỏ < 5s. Batch 20 file thường 2-5 phút.
- 5
Tải ZIP về
Nhấn tải về — ZIP chứa toàn bộ .svg với tên file gốc.
Khi nào dùng Batch Convert?
Batch Convert vs chuyển từng file thủ công
So sánh thời gian thực tế khi convert icon set 20 file PNG 256×256.
| Tiêu chí | Batch Convert (OneSVG) | Chuyển từng file |
|---|---|---|
| Thao tác upload | 1 lần (drag-drop tất cả) | 20 lần (từng file) |
| Thao tác download | 1 lần (1 file ZIP) | 20 lần |
| Thời gian tổng | ~2-5 phút | ~15-30 phút (tuỳ tốc độ người dùng) |
| Tên file trong output | Giữ nguyên tên gốc | Phải tự rename |
| Lỗi 1 file | Skip, batch tiếp tục | Phải retry thủ công |
| Quản lý tiến trình | Progress bar từng file realtime | Không thấy tổng tiến trình |
| Lưu config | 1 lần apply cho cả batch | Phải set lại mỗi file |
Batch Convert hoạt động thế nào dưới capo?
Khi bạn upload 20 file, API /api/batch tạo 20 job độc lập trong BullMQ queue 'SVGProcessing', tất cả share chung một batchId (UUID v4). Mỗi job có jobId riêng (BullMQ auto-generated numeric ID) và được thêm vào Redis với data: {batchId, batchIndex, type, inputPath, outputPath, options}.
Worker pool chạy concurrency=2 (trên server i5 2 core) — tại một thời điểm 2 file được trace song song. Khi 1 worker hoàn thành job, nó pick job tiếp theo từ queue. Progress từng job push qua Redis pub/sub về client — front-end poll /api/batch/[batchId] mỗi 1.5s để update UI.
Khi tất cả job trong batch đạt state 'completed' hoặc 'failed', endpoint POST /api/batch/[batchId]/zip sẽ stream chunk từ archiver (Node stream-based ZIP) — không load toàn bộ file vào memory, tránh OOM với batch lớn. ZIP chứa tất cả file SVG thành công, tên file giữ nguyên từ upload. File cleanup cron 30 phút/lần xoá ZIP > 1 giờ.
Câu hỏi về Batch Convert
Tối đa bao nhiêu file?
Có xử lý song song không?
File gặp lỗi có làm hỏng cả batch không?
Có thể mix ảnh màu và đen trắng không?
Công cụ liên quan
Color Vectorize (VTracer)
Chuyển ảnh PNG/JPG nhiều màu sang SVG thuần với thuật toán VTracer, giữ nguyên tinh tế gradient và chi tiết.
Mono Vectorize (Potrace)
Vector hoá logo, icon, line-art đen trắng với Potrace — đường cong mượt, path sạch, nhẹ tối đa.
SVG Optimizer (SVGO)
Nén file SVG có sẵn tới 70% dung lượng không giảm chất lượng: loại metadata thừa, làm tròn toạ độ, gộp path.