[MS SQL 2K] Controleren Image Column Op dubbelen

Pagina: 1
Acties:

  • BasSpruit
  • Registratie: September 2002
  • Laatst online: 09-04-2022
Ik ben bezig met een .NET (1.1) project waar in een (SQL2k database) tabel plaatjes staan. Nu wil ik graag kunnen controleren of een plaatje nog niet bestaat in de database omdat er nogal wat dubbele instaan.

Dit gebeurd op dit moment namelijk met het handje ( er is een prog gemaakt welke de inhoud kan tonen ), en ik wil graag voorkomen dat dit bij een nieuw project weer gebeurd.

Ik heb hier niks over gelezen in de books online (of in elk geval niet kunnen vinden) Ik heb ook al op dit topic gekeken: [rml][ mssql] full-text index op "image"-field?[/rml]. Is het verstandig om er een Full Text index op te leggen? (gewone index is niet mogelijk...)

Ik zou natuurlijk alvast voor kunnen filteren op hoogte, breedte en lengte van het bestand, maar daar haal ik natuurlijk geen dubbele waarden eruit.

Wat is jullie advies?

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Als ik zo die post lees die je aangeeft in je TS dan lijkt het erop dat SQL2K filters heeft waarmee tekstuele informatie kan worden gelezen (en daarop dus gezocht) uit Excel/Word en andere opgemaakte tekstbronnen. Een image is geen tekstbron, dus een Full Text Index zal je dus weinig gaan opleveren. Je zult hooguit de tekstuele informatie uit bijvoorbeeld een JPEG bestand kunnen indexeren, maar dat is header informatie.

Wat is het probleem om zelf te filteren op dimensies en filesize en vervolgens binair te vergelijken? Volgens mij minimaliseer je op die manier de load op je DB toch voldoende?

Een andere mogelijkheid is een hash (MD5 oid) op te slaan van de image en daarop te vergelijken. Dubbele md5 hashes kunnen voorkomen, maar de kans dat zowel de dimensies, als de filesize en vervolgens ook nog de md5 hashes gelijk zijn is vrijwel nihil.

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 17-12-2025

curry684

left part of the evil twins

Hashen. En md5/sha1 clashes op valide images zijn zooooooooo onwaarschijnlijk dat je echt niet op meer dan de hash hoeft te checken.

Professionele website nodig?


  • BasSpruit
  • Registratie: September 2002
  • Laatst online: 09-04-2022
curry684 schreef op dinsdag 28 februari 2006 @ 12:55:
Hashen. En md5/sha1 clashes op valide images zijn zooooooooo onwaarschijnlijk dat je echt niet op meer dan de hash hoeft te checken.
Many thanks! Ik ga uitzoeken hoe ik de SHA1 kan / moet gebruiken. Kan ik aannemen dat de grootte van de hash afhankelijk is van de grootte van de image?

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 08-04 12:03

Janoz

Moderator Devschuur®

!litemod

Bedenk trouwens wel dat dit alleen werkt met exact dezelfde plaatjes. Zodra een pixel wordt aangepast of een andere jpeg kwaliteit wordt gebruikt worden de plaatjes als verschillend gezien.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 17-12-2025

curry684

left part of the evil twins

Hash is altijd even groot, da's juist een van de kernideeen erachter :)

Leesvoer: MD5, cryptographic hash function.

Quote uit de 2e:
A hash function takes a long string (or message) of any length as input and produces a fixed length string as output, sometimes termed a message digest or a digital fingerprint.

Professionele website nodig?


  • BasSpruit
  • Registratie: September 2002
  • Laatst online: 09-04-2022
Janoz schreef op dinsdag 28 februari 2006 @ 13:49:
Bedenk trouwens wel dat dit alleen werkt met exact dezelfde plaatjes. Zodra een pixel wordt aangepast of een andere jpeg kwaliteit wordt gebruikt worden de plaatjes als verschillend gezien.
Dat is precies wat ik nodig heb. Anders kan ik later altijd nog wel zien dat de plaatjes te veel met elkaar overeenkomen.

[edit]

Als ik dit
Visual Basic:
1
2
3
4
5
6
Dim img As New Bitmap(100, 100)
        Dim graph As Graphics = Graphics.FromImage(img)
        graph.Clear(Color.White)
        graph.FillRectangle(Brushes.Black, 10, 10, 80, 80)
        Dim Mem As New MemoryStream
        img.Save(Mem, ImageFormat.Jpeg)


en
Visual Basic:
1
Me.TextBox1.Text = Enc.GetString(SHA.ComputeHash(Mem.GetBuffer))


uitvoer, dan krijg ik dit: zR[ FiE1

Hoort dit zo kort te zijn? (Ik heb moeite dit te geloven namelijk...)

[ Voor 36% gewijzigd door BasSpruit op 28-02-2006 14:47 ]


  • Robbemans
  • Registratie: November 2003
  • Laatst online: 17-07-2025
Ja, dat kan wel kloppen. Een hash is niet absoluut uniek, maar over het algemeen uniek genoeg.
Pagina: 1