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

Tìm ảnh trùng lặp

Tải lên nhiều ảnh để phát hiện các bản trùng lặp và gần trùng lặp bằng băm cảm nhận (dHash). Nhóm các ảnh tương tự với nhau, xác định phiên bản chất lượng tốt nhất trong mỗi nhóm, và tính toán không gian có thể tiết kiệm được.

Điểm cuối API

POST /api/v1/tools/image/find-duplicates

Chấp nhận dữ liệu biểu mẫu multipart với nhiều tệp ảnh và một trường JSON settings tùy chọn.

Tham số

Tham sốKiểuBắt buộcMặc địnhMô tả
thresholdnumberKhông8Khoảng cách Hamming tối đa để coi các ảnh là trùng lặp (0 đến 20). Thấp hơn = khớp nghiêm ngặt hơn

Trường tệp

Tải lên ít nhất 2 tệp ảnh trong yêu cầu multipart (tất cả dùng tên trường file hoặc bất kỳ tên trường nào cho các phần tệp).

Ví dụ yêu cầu

bash
curl -X POST http://localhost:1349/api/v1/tools/image/find-duplicates \
  -H "Authorization: Bearer si_your-api-key" \
  -F "[email protected]" \
  -F "[email protected]" \
  -F "[email protected]" \
  -F "[email protected]" \
  -F 'settings={"threshold": 8}'

Ví dụ phản hồi

json
{
  "totalImages": 4,
  "duplicateGroups": [
    {
      "groupId": 1,
      "files": [
        {
          "filename": "photo1.jpg",
          "similarity": 100,
          "width": 4032,
          "height": 3024,
          "fileSize": 2450000,
          "format": "jpeg",
          "isBest": true,
          "thumbnail": "data:image/jpeg;base64,/9j/..."
        },
        {
          "filename": "photo2.jpg",
          "similarity": 96.88,
          "width": 1920,
          "height": 1440,
          "fileSize": 850000,
          "format": "jpeg",
          "isBest": false,
          "thumbnail": "data:image/jpeg;base64,/9j/..."
        }
      ]
    }
  ],
  "uniqueImages": 2,
  "spaceSaveable": 850000,
  "skippedFiles": []
}

Trường phản hồi

TrườngKiểuMô tả
totalImagesnumberSố ảnh được phân tích thành công
duplicateGroupsarrayCác nhóm ảnh trùng lặp
uniqueImagesnumberSố ảnh không thuộc bất kỳ nhóm trùng lặp nào
spaceSaveablenumberTổng số byte có thể tiết kiệm bằng cách xóa các bản trùng lặp không phải bản tốt nhất
skippedFilesarrayCác tệp không thể xử lý (kèm tên tệp và lý do)

Đối tượng nhóm trùng lặp

TrườngKiểuMô tả
groupIdnumberĐịnh danh nhóm
filesarrayCác ảnh trong nhóm trùng lặp này

Đối tượng tệp (trong một nhóm)

TrườngKiểuMô tả
filenamestringTên tệp gốc
similaritynumberPhần trăm mức độ tương tự so với ảnh tham chiếu (ảnh đầu tiên trong nhóm)
widthnumberChiều rộng ảnh tính bằng pixel
heightnumberChiều cao ảnh tính bằng pixel
fileSizenumberKích thước tệp tính bằng byte
formatstringĐịnh dạng ảnh
isBestbooleanCó phải đây là phiên bản chất lượng cao nhất hay không (nhiều pixel nhất, tệp lớn nhất)
thumbnailstring hoặc nullThumbnail JPEG dạng Base64 (rộng 200px) để xem trước

Ghi chú

  • Sử dụng dHash 128-bit (64-bit hàng + 64-bit cột) để phát hiện tương tự cảm nhận. Cách này bắt được cả các bản trùng lặp qua thay đổi kích thước, nén lại và chỉnh sửa nhỏ.
  • Ngưỡng biểu thị khoảng cách Hamming tối đa giữa các băm. Giá trị mặc định 8 bắt được các bản gần trùng lặp trong khi tránh dương tính giả. Dùng 0 cho chỉ giống hệt từng pixel, hoặc 15-20 cho khớp rất lỏng.
  • Ảnh "tốt nhất" trong mỗi nhóm là ảnh có nhiều pixel nhất (chiều rộng x chiều cao), với kích thước tệp làm tiêu chí phân hạng phụ.
  • Cần ít nhất 2 ảnh. Các tệp không vượt qua bước xác thực hoặc giải mã được báo cáo trong skippedFiles thay vì làm cho toàn bộ yêu cầu thất bại.
  • Thumbnail là các bản xem trước JPEG rộng 200px được mã hóa dưới dạng data URI.
  • Tất cả các định dạng phổ biến đều được hỗ trợ (HEIC, RAW, PSD, SVG được giải mã tự động).