pHash eines Bildes berechnen
Dieses Werkzeug aus dem KIT berechnet den pHash (Perceptual Hash) eines Bildes: einen kurzen Wert, der den visuellen Inhalt beschreibt und sich mit dem pHash anderer Bilder vergleichen lässt, um Duplikate oder sehr ähnliche Aufnahmen zu finden – auch nach Größenänderung oder leichter Kompression.
Im Browser ausführen – kostenlos
Läuft direkt in Ihrem Browser – kostenlos. Ihre Datei verlässt Ihren Browser nicht und wird an keinen Server übertragen.
Was einen pHash von einer normalen Prüfsumme unterscheidet
Eine klassische Prüfsumme wie ein Hash-Wert ändert sich vollständig, sobald sich auch nur ein einziges Bildpixel ändert – ungeeignet, um ähnliche, aber nicht identische Bilder zu erkennen. Ein pHash dagegen beschreibt den visuellen Eindruck eines Bildes: Zwei Aufnahmen desselben Motivs, eine davon leicht komprimiert oder verkleinert, erhalten ähnliche pHash-Werte, obwohl ihre Dateien technisch vollkommen unterschiedlich sind und unterschiedlich groß ausfallen.
Wofür sich das eignet
Mit dem pHash zweier Bilder lässt sich der Abstand zwischen ihnen berechnen: Ein kleiner Abstand bedeutet, dass die Bilder sich stark ähneln oder identisch sind, ein großer Abstand bedeutet, dass sie deutlich unterschiedlich sind. So finden Sie Duplikate in einer großen Bildersammlung, auch wenn die Dateien nicht byteidentisch sind, oder prüfen automatisiert, ob ein hochgeladenes Bild bereits in Ihrem Bestand existiert oder neu ist.
Ein Wert, der zum direkten Vergleich gehört
Der pHash allein sagt wenig aus – seine Stärke zeigt sich erst beim Vergleich zweier Werte gegeneinander. Wenn Sie direkt wissen möchten, wie ähnlich sich zwei konkrete Bilder sind, ohne selbst pHash-Werte zu berechnen und den Abstand manuell auszuwerten, gibt es dafür ein eigenes Werkzeug, das Ihnen direkt ein fertiges Ähnlichkeitsergebnis liefert, ohne eigene Formel oder eigenen Rechenschritt dazwischen zu programmieren.
Kostenlos und lokal berechnet
Die Berechnung läuft vollständig in Ihrem Browser, das Bild wird nicht an einen Server übertragen. Das Werkzeug ist kostenlos und ohne Limit nutzbar – praktisch, um während der Entwicklung einzelne Werte schnell zu prüfen, bevor Sie die Berechnung serverseitig in eine größere Anwendung integrieren und dauerhaft automatisieren, ohne Testkosten oder zusätzliche Wartezeit während der gesamten frühen Entwicklungsphase Ihres eigenen laufenden Projekts.
Anwendungsfälle
Duplikate in einer Bildersammlung finden
Eine Fotoagentur möchte doppelt hochgeladene Bilder in ihrem Archiv erkennen, auch wenn diese unterschiedlich komprimiert wurden. Über den pHash jedes Bildes lassen sich nahezu identische Aufnahmen zuverlässig zusammenführen.
Prüfen, ob ein Bild bereits im Bestand existiert
Ein Marktplatz möchte verhindern, dass dasselbe Produktfoto mehrfach unter verschiedenen Anzeigen erscheint. Der pHash neuer Uploads wird mit dem Bestand verglichen, um Wiederholungen zu erkennen.
Testwerte während der Entwicklung
Ein Entwickler prüft den pHash zweier Testbilder, bevor er die automatisierte Duplikaterkennung in seine Anwendung einbaut.
Häufige Fragen
Worin unterscheidet sich ein pHash von einem normalen Hash-Wert?
Ein normaler Hash-Wert ändert sich vollständig bei jeder kleinsten Veränderung der Datei. Ein pHash beschreibt den visuellen Inhalt und bleibt bei leicht veränderten Bildern, etwa nach Kompression oder Größenänderung, ähnlich.
Kann ich mit dem pHash direkt sagen, ob zwei Bilder gleich sind?
Sie erhalten den Wert für jedes Bild einzeln und vergleichen ihn selbst. Wenn Sie direkt ein Ähnlichkeitsergebnis für zwei konkrete Bilder wünschen, ohne selbst zu vergleichen, gibt es dafür ein eigenes Werkzeug.
Ist die Berechnung des pHash kostenlos?
Ja, vollständig kostenlos und ohne Limit, solange Sie das Werkzeug im Browser nutzen.
Muss ich das Bild irgendwohin senden, damit der Wert berechnet wird?
Nein, die Berechnung findet direkt in Ihrem Browser statt, das Bild verlässt Ihr Gerät nicht.
Kann ich pHash-Werte automatisch für eine große Bildersammlung berechnen?
Ja, über die API lässt sich die Berechnung in eine Anwendung integrieren, etwa um bei jedem Bild-Upload automatisch einen pHash zu erzeugen und zu speichern.
Erkennt der pHash auch gedrehte oder gespiegelte Bilder als ähnlich?
Bei leichten Änderungen wie Kompression oder Größenänderung bleibt der Wert ähnlich, bei einer Drehung oder Spiegelung verändert er sich dagegen deutlich stärker.
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem Stack
curl -X POST https://api.kit.forhosting.com/image/phash \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"image":"https://ejemplo.com/imagen.jpg"}'const res = await fetch("https://api.kit.forhosting.com/image/phash", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"image": "https://ejemplo.com/imagen.jpg"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/image/phash",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"image": "https://ejemplo.com/imagen.jpg"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/image/phash", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"image":"https://ejemplo.com/imagen.jpg"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"image":"https://ejemplo.com/imagen.jpg"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/image/phash", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"image": "https://ejemplo.com/imagen.jpg"
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "image.phash",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Limits
max_mb | 15 |
max_megapixels | 12 |
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |