![]() |
Hash eines Bildes?
hi,
Ich möchte ein Programm schreiben, welches ein Bild einen wert o.ä. entnimmt, damit ich es mit einem anderen vergleichen kann und ggf. darauf handle. Das ganze soll dann über das Inet laufen, weshalb ich nicht die Bilder verschicken möchte sondern einen Wert. Ich habe mir schon überlegt die Byte Zahl zu verschicken daher das ist glaube etwas ungenau oder? Und den Wert zu ermitteln sollte keinen großen Rechenaufwand sein, da viele Bilder nacheinander einen Wert bekommen sollen! Gibt es eine Möglichkeit dafür? mfg gandime |
Re: ein Quersumme oder sowas in der Art eines Bildes?
So etwas nennt sich Hash. Einfach mal danach suchen, vielleicht findest du direkt eine Funktion, der du eine Datei übergibst, und die dir dann den Hashwert liefert.
|
Re: ein Quersumme oder sowas in der Art eines Bildes?
das einzige sinnvolle was ich gefunden habe is folgendes:
Zitat:
![]() bis jetzt habe ich folgendes:
Delphi-Quellcode:
an der Makierten stelle ist meine erste Frage wie bekomme ich von dem Pixel die rot blau gelb Werte und wie werden sie zusammengerechnet?
for I := 0 to b_temp.Width - 1 do
begin for ii := 0 to b_temp.Height - 1 do begin i_z_wert:=b_temp.Pixel[i,ii]//hier end; end; edit: hab ich das so jetzt richtig gemacht?
Delphi-Quellcode:
var
b_temp:tbitmap32; i,ii,i_size,i_z_wert:integer; r_temp:real; st_temp:tmemorystream; s_temp:string; begin b_temp:=tbitmap32.create; b_temp.LoadFromFile('a.bmp'); i_z_wert:=0; for I := 0 to b_temp.Width - 1 do begin for ii := 0 to b_temp.Height - 1 do begin i_z_wert:=i_z_wert+GetRValue(b_temp.pixel[i,ii]); i_z_wert:=i_z_wert+GetGValue(b_temp.pixel[i,ii]); i_z_wert:=i_z_wert+GetBValue(b_temp.pixel[i,ii]); end; end; st_temp:=tmemorystream.create; b_temp.SaveToStream(st_temp); i_size:=st_temp.Size; st_temp.free; b_temp.Free; s_temp:=inttostr(i_z_wert); r_temp:=length(s_temp)/i_size; showmessage(floattostr(r_temp)); |
Re: Hash eines Bildes?
Frage: Brauchst du unbedingt einen Toleranz-Wert? Wenn du nur wissen willst, ob das exakt die selbe Datei ist, gibt es bessere Verfahren.
|
Re: Hash eines Bildes?
so das Problem dabei is das es im Prinziep das selbe Bild ist aber ich wandele es vorher in jpg um.
Ist es denn möglich dass der Sich das bild dann minimal ändert? |
Re: Hash eines Bildes?
Dann wird der Header anders und die Checksum (Hash) würde was anderes ergeben.
|
Re: Hash eines Bildes?
wie kann ich das vermeiden?
|
Re: Hash eines Bildes?
garnicht.
würde es dir aber nichr reichen, wenn du das Änderungsdatum der Dateien prüfst? du könntest in diesem Falls höchstens den Dateiinhalt, also die Pixel selber vergleichen, aber da im JPeg die Pixel sich ebenfalls verändern (Aufgrund der Komprimierung) könnte man da nur mit näherunswerten vergleichen, welches wiederrum nicht über einen Hash (über die die/das gesamte Datei/Bild) möglich wäre. |
Re: Hash eines Bildes?
nein das geht nicht da das Bild immer wieder neu gemacht wird!
dadurch fällt das weg! |
Re: Hash eines Bildes?
Tja, dann mußt du halt nach etwas (Kleinem) suchen, welches quasi eindeutig die Datei indentiviziert.
Oder du schaffst dir soewas. Irgendwo (z.B. im Dateinamen oder irgendeiner Liste) einen wert speichern, welcher dat Bild und seinen Status repräsentiert ... und dann diesen Wert vergleichen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz