ERLEDIGT
JA
JA
ANTWORTEN
4
4
ZUGRIFFE
334
334
EMPFEHLEN
-
Hallo,
habe nun lange zeit nix mehr programmiert ... und darf endlich mal wieder reinhauen.
Ich hab folgendes Problem: Eine Grafik wird in ein System übernommen. Dabei muss sichergestellt werden, dass die Grafik danach sich nie wieder verändert hat. Ich denke mir, mit dem Kopiervorgang müßte ich ein ein Attribute des Bildes so codieren können, dass ich es später immer wieder vergleichen könnte. Jemand eine Idee, wie ich dies Speicherschohnend und schnell mache?
Chris
-
04.03.10 17:26 #2
Verwende doch ein Hash-Verfahren ala MD5 oder SHA1, du erstellst dabei einen Hash der nicht veränderlichen Eigenschaften bzw. des ganzen Bildes. Später kannst du diesen gespeicherten Hash mit einem aktuell erstellten vergleichen, so siehst du gleich, ob es eine Änderung gegeben hat.
Der Doc!A: Hilfe, ich hab zwei Dateien hinzugefügt und nun sind die anderen weg
B: Die Scrollbar da rechts ist dir schon mal aufgefallen?
-
Hash-Codes bieten nur die Möglichkeit für einen Plausibilitätstest, und eine gute Hashfunktion zu erstellen kann schwierig werden. Um sicherzustellen, dass die Grafik nicht verändert wird, ist es einfacher und besser, den Zugriff zu kapseln. Du erstellst dann eine Art Adapter-Klasse, welche das Bild einliest und bei Bedarf zur Verfügung stellt. Dabei lieferst du nicht das Bild selber zurück, sondern bietest Methoden an, welche die gewünschte bzw. erlaubte Funktionalität anbieten. Denkbar ist beispielsweise eine paint-Methode für Komponenten.
Vielen Dank für die Nutzung des Bewerten- und Danke-Buttons
Wenn man sieht, dass man einen anderen glücklich gemacht hat, ist die Welt um zwei glückliche Menschen reicher.
-
Hi,
hab nun gedacht, dass ich es so lösen kann:
Code :1 2 3 4 5 6 7 8 9 10 11 12
public void LoadPic(FileInfo fileInfo) { FileStream fs = new FileStream(fileInfo.FullName, FileMode.Open,FileAccess.Read); byte[] imageData = new byte[fs.Length]; fs.Read(ImageData,0,System.Convert.ToInt32(fs.Length)); fs.Close(); string test = ImageData.GetHashCode().ToString(); }
Jedoch erhält test immer wieder neue Werte. Dabei hoffte ich, mit GetHashCode einen eindeutigen "Fingerprint" zu erhalten. Was läuft hier nur schief?
- UPDATE -
In FileInfo ist nur ein Verweis zu einer Bilddatei mit 6 megapixel.
Chris
PS. Exceptionhandling etc. kommt noch. Hab den Code reduziert, damit nur das Problem sichtbar wird.Geändert von XChris (10.03.10 um 09:12 Uhr)
-
Ich möchte lösen:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
private string hashImage(string filename) { FileStream fs = new FileStream(filename, FileMode.Open,FileAccess.Read); byte[] imageData = new byte[fs.Length]; fs.Read(imageData,0,System.Convert.ToInt32(fs.Length)); fs.Close(); string test; System.Text.Encoding enc = System.Text.Encoding.UTF32; test = enc.GetString(imageData); test = getMD5(test.ToCharArray()); return test; } private string getMD5(char[] input) { System.Security.Cryptography.MD5CryptoServiceProvider x = new System.Security.Cryptography.MD5CryptoServiceProvider(); byte[] bs = System.Text.Encoding.UTF8.GetBytes(input); bs = x.ComputeHash(bs); System.Text.StringBuilder s = new System.Text.StringBuilder(); foreach (byte b in bs) { s.Append(b.ToString("x2").ToLower()); } string password = s.ToString(); return password; }
Chris
PS: Danke an Mahdi für die Schützenhilfe.
Ähnliche Themen
-
Variablen einen Wertebereich geben
Von FJK im Forum .NET CaféAntworten: 3Letzter Beitrag: 12.08.10, 12:09 -
Button einen Wert geben
Von zuckerbrini im Forum HTML & XHTMLAntworten: 3Letzter Beitrag: 29.01.09, 21:29 -
<div>-Element einen Focus geben
Von Geflügel im Forum Javascript & AjaxAntworten: 4Letzter Beitrag: 01.09.07, 11:03 -
Datei leserechte geben - darf aber nicht kopiert werden !
Von KMX-Robin im Forum Hosting & WebserverAntworten: 2Letzter Beitrag: 13.08.03, 22:53





Zitieren

Login





