2009-04-15 10 views
3

Was ist der beste Weg, um Bilder in der Datenbank zu vergleichen? Ich habe versucht, sie zu vergleichen (@Image ist die Art Image):Bilder in SQL vergleichen

Select * from Photos 
where [Photo] = @Image 

aber erhält die Fehlermeldung „Die Datentypen Bild und Bild sind nicht kompatibel in der gleich Operator“.

Antwort

9

Da der Image-Datentyp ein binärer und riesiger Speicherplatz zum Speichern von Daten ist, ist der einfachste Weg, Image-Felder zu vergleichen, der Hash-Vergleich. Sie müssen also Hash der Spalte Foto auf Ihrem Tisch speichern.

1

Wenn Sie das Bild vergleichen müssen, sollten Sie alle Bilder aus der Datenbank abrufen und tun dies aus der Sprache, die Sie für den Zugriff auf die Datenbank verwenden. Dies ist einer der Gründe, warum es nicht empfehlenswert ist, Bilder oder andere Binärdateien in einer relationalen Datenbank zu speichern. Sie sollten jedes Mal einen eindeutigen Dateinamen erstellen, wenn Sie ein Bild in einer Datenbank speichern möchten. Benennen Sie die Datei mit diesem eindeutigen Dateinamen um, speichern Sie das Image auf der Festplatte und fügen Sie in der Datenbank den Namen auf der Festplatte und schließlich den ursprünglichen Namen der Datei oder des vom Benutzer Ihrer App bereitgestellten Datein ein.

+0

Wie hilft Ihnen das Speichern auf der Festplatte, sie zu vergleichen? Sie müssten immer noch ein Werkzeug dafür schreiben. –

+0

oops, ich habe vergessen, dass vor dem Speichern der Datei können Sie seine Prüfsumme generieren und speichern Sie es in der db. Diese Daten können zum Vergleichen von Dateien verwendet werden. jeder andere Ansatz wäre zu langsam –

0

Es hängt davon ab, wie genau Sie sein möchten und wie viele Bilder Sie vergleichen müssen. Sie können verschiedene Funktionen wie DATALENGTH und SUBSTRING oder READTEXT verwenden, um einige Vergleiche zu machen. Alternativ könnten Sie Code in der CLR schreiben und ihn über eine gespeicherte Prozedur implementieren, um Vergleiche durchzuführen.

+0

Bilder können auf diese Weise nicht verglichen werden. Es geht nicht nur um die binären Daten, es ist darüber hinaus .. Bildverarbeitung –

+0

Haben Sie jemals versucht, dies zu tun? Hast du meine ganze Antwort gelesen? –

0

Vergleichen von Bildern fällt unter eine bestimmte Kategorie der Informatik, die als Bildverarbeitung bezeichnet wird. Sie sollten einige Bibliotheken durchsuchen, die Bildverarbeitungsfunktionen bereitstellen. Damit können Sie bis zu welchem ​​Verhältnis zwei identische oder identische Bilder vergleichen. Sie können 2 Bilder haben, die bis zu 50% oder mehr übereinstimmen. Es gibt mathematische Algorithmen, die die Vergleichsformeln definieren, die das Verhältnis zurückgeben.

Hope this Sie eine Richtung gibt weiter auf dem Problem zu arbeiten ..

1

Im Allgemeinen, wie es bereits erwähnt worden ist, müssen Sie spezielle Algorithmen aus der Bildverarbeitung shelve verwenden.

Außerdem ist es schwierig, eine genaue Antwort zu geben, weil die Frage zu allgemein ist. Zwei Bilder können als unterschiedlich oder nicht basierend auf der Anzahl der Eigenschaften betrachtet werden.

Zum Beispiel können Sie ein Bild einer Blume 100x100 Pixel und Bild der gleichen Blume haben, aber auf 50x50 Pixel Größe geändert. Für einige Zwecke und Anwendungen werden diese beiden als ähnlich angesehen (unabhängig von unterschiedlichen Abmessungen), aber für andere Zwecke werden sie unterschiedliche Bilder sein.

Möglicherweise möchten Sie überprüfen, wie Bildvergleich von einigen Werkzeugen realisiert wird und lernen, wie es funktioniert:

Wenn Sie nicht wollen, Bild vergleichen Inhalt, sondern nur überprüfen, ob zwei binäre Ströme (Bilddateien, andere Binärdateien, binäres Objekt mit Bildinhalt) gleichwertig sind, dann können Sie MD5 Prüfsummen von Bildern vergleichen.

Verwandte Themen