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

Znajdź duplikaty

Prześlij wiele obrazów, aby wykryć duplikaty i niemal identyczne obrazy przy użyciu haszowania percepcyjnego (dHash). Grupuje podobne obrazy razem, identyfikuje wersję o najlepszej jakości w każdej grupie i oblicza potencjalne oszczędności miejsca.

Punkt końcowy API

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

Przyjmuje dane formularza multipart z wieloma plikami obrazów oraz opcjonalnym polem JSON settings.

Parametry

ParametrTypWymaganyDomyślnieOpis
thresholdnumberNie8Maksymalna odległość Hamminga uznająca obrazy za duplikaty (0 do 20). Niższa = surowsze dopasowanie

Pola plików

Prześlij co najmniej 2 pliki obrazów w żądaniu multipart (wszystkie używając nazwy pola file lub dowolnej nazwy pola dla części plików).

Przykładowe żądanie

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}'

Przykładowa odpowiedź

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": []
}

Pola odpowiedzi

PoleTypOpis
totalImagesnumberLiczba pomyślnie przeanalizowanych obrazów
duplicateGroupsarrayGrupy zduplikowanych obrazów
uniqueImagesnumberLiczba obrazów nienależących do żadnej grupy duplikatów
spaceSaveablenumberŁączna liczba bajtów, którą można zaoszczędzić, usuwając duplikaty inne niż najlepsze
skippedFilesarrayPliki, których nie udało się przetworzyć (z nazwą pliku i powodem)

Obiekt grupy duplikatów

PoleTypOpis
groupIdnumberIdentyfikator grupy
filesarrayObrazy w tej grupie duplikatów

Obiekt pliku (w obrębie grupy)

PoleTypOpis
filenamestringOryginalna nazwa pliku
similaritynumberProcentowe podobieństwo do obrazu referencyjnego (pierwszego w grupie)
widthnumberSzerokość obrazu w pikselach
heightnumberWysokość obrazu w pikselach
fileSizenumberRozmiar pliku w bajtach
formatstringFormat obrazu
isBestbooleanCzy jest to wersja o najwyższej jakości (najwięcej pikseli, największy plik)
thumbnailstring lub nullMiniatura JPEG w Base64 (szerokość 200px) do podglądu

Uwagi

  • Wykorzystuje 128-bitowy dHash (64-bitowy wiersz + 64-bitowa kolumna) do wykrywania podobieństwa percepcyjnego. Wykrywa to duplikaty nawet po zmianie rozmiaru, ponownej kompresji i drobnych edycjach.
  • Próg reprezentuje maksymalną odległość Hamminga między haszami. Domyślna wartość 8 wykrywa niemal identyczne obrazy, unikając fałszywych trafień. Użyj 0 dla identycznych pikselowo, lub 15-20 dla bardzo luźnego dopasowania.
  • „Najlepszym” obrazem w każdej grupie jest ten z największą liczbą pikseli (szerokość x wysokość), z rozmiarem pliku jako kryterium rozstrzygającym.
  • Wymagane są co najmniej 2 obrazy. Pliki, które nie przejdą walidacji lub dekodowania, są zgłaszane w skippedFiles, zamiast powodować niepowodzenie całego żądania.
  • Miniatury to podglądy JPEG o szerokości 200px zakodowane jako identyfikatory URI danych.
  • Obsługiwane są wszystkie popularne formaty (HEIC, RAW, PSD, SVG dekodowane automatycznie).