Files
SnapOtter/apps/docs/sv/tools/image/find-duplicates.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
Upptäck dubbletter och nästan identiska bilder med perceptuell hashning. 4e1f4413f90f human 0582f183ee0a

Hitta dubbletter

Ladda upp flera bilder för att upptäcka dubbletter och nästan identiska bilder med perceptuell hashning (dHash). Grupperar liknande bilder tillsammans, identifierar versionen med bäst kvalitet i varje grupp och beräknar potentiella utrymmesbesparingar.

API-slutpunkt

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

Tar emot multipart-formulärdata med flera bildfiler och ett valfritt JSON-fält settings.

Parametrar

Parameter Typ Obligatorisk Standard Beskrivning
threshold number Nej 8 Maximalt Hamming-avstånd för att betrakta bilder som dubbletter (0 till 20). Lägre = strängare matchning

Filfält

Ladda upp minst 2 bildfiler i multipart-begäran (alla med fältnamnet file eller vilket fältnamn som helst för fildelar).

Exempelbegäran

curl -X POST http://localhost:1349/api/v1/tools/image/find-duplicates \
  -H "Authorization: Bearer si_your-api-key" \
  -F "file=@photo1.jpg" \
  -F "file=@photo2.jpg" \
  -F "file=@photo3.jpg" \
  -F "file=@photo4.jpg" \
  -F 'settings={"threshold": 8}'

Exempelsvar

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

Svarsfält

Fält Typ Beskrivning
totalImages number Antal bilder som analyserats framgångsrikt
duplicateGroups array Grupper av dubblettbilder
uniqueImages number Antal bilder som inte ingår i någon dubblettgrupp
spaceSaveable number Totalt antal byte som kan sparas genom att ta bort dubbletter som inte är bäst
skippedFiles array Filer som inte kunde bearbetas (med filnamn och orsak)

Objekt för dubblettgrupp

Fält Typ Beskrivning
groupId number Gruppidentifierare
files array Bilder i denna dubblettgrupp

Filobjekt (inom en grupp)

Fält Typ Beskrivning
filename string Ursprungligt filnamn
similarity number Likhetsprocent i förhållande till referensbilden (den första i gruppen)
width number Bildbredd i pixlar
height number Bildhöjd i pixlar
fileSize number Filstorlek i byte
format string Bildformat
isBest boolean Om detta är versionen med högst kvalitet (flest pixlar, störst fil)
thumbnail string eller null Base64 JPEG-miniatyr (200px bred) för förhandsvisning

Anmärkningar

  • Använder en 128-bitars dHash (64-bitars rad + 64-bitars kolumn) för perceptuell likhetsdetektering. Detta fångar dubbletter även vid storleksändringar, omkomprimering och mindre redigeringar.
  • Tröskelvärdet representerar det maximala Hamming-avståndet mellan hashvärden. Standardvärdet 8 fångar nästan identiska bilder samtidigt som falska positiva undviks. Använd 0 för endast pixelidentiska, eller 15-20 för mycket lös matchning.
  • Den "bästa" bilden i varje grupp är den med flest pixlar (bredd x höjd), med filstorlek som avgörande faktor vid lika resultat.
  • Minst 2 bilder krävs. Filer som misslyckas med validering eller avkodning rapporteras i skippedFiles i stället för att få hela begäran att misslyckas.
  • Miniatyrer är 200px breda JPEG-förhandsvisningar kodade som data-URI:er.
  • Alla vanliga format stöds (HEIC, RAW, PSD, SVG avkodas automatiskt).