![]() |
Image Canvas Pixel in Memo
Hallo,
ich versuche gerade ein Image pixel für pixel abzuarbeiten und die Fraben als Zeichen in ein Memofeld einzufügen. Nur leider will meine Prozedur nicht richtig funktionieren. Eigentlich sollte das rauskommen: Das ist ein Testtext. Es kommt aber das heraus: ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ Das ist die Prozedure:
Delphi-Quellcode:
Vielleicht weiß ja einer was ich falsch gemacht habe, ich bedanke mich schonml für die Hilfe.
procedure TForm15.Button2Click(Sender: TObject);
var color: TColor; B, Y, X: Integer; hex, s, t:string; begin for Y := 0 to Image1.Height do begin for X := 0 to Image1.Width do begin color:=image1.Canvas.Pixels[X,Y]; B := GetBValue(color); hex:=IntToHex(B, 2); t:=Chr(StrToInt('$'+hex)); s:=s+t; end; Memo1.Lines.add(s); s:=''; end; end; |
Re: Image Canvas Pixel in Memo
Anmerkungen, die das Problem wahrscheinlich nicht betreffen, aber dennoch erwähnenswert sind:
- Lass die Schleifen bis Image1.Width-1 (gleiches bei Height) laufen. Im Moment rauscht du immer einen Pixel zu weit. - Die Wursterei mit Hex ist überflüssig. t := chr(B); mehr brauchst du nicht. Als Einzeiler: "s := s + chr(GetBValue(Image1.Canvas.Pixels[X, Y]));" Was das Problem selbst angeht, so würde es helfen, wenn du dir die Zahlenwerte von B mal testweise mit ausgeben lässt. 'ÿ' ist wenn ich nicht irre #254 oder #255. Wenn B andere Werte hat, liegts vermutlich doch irgendwie an der Hex-Fummelei, wobei ich um die Uhrzeit auf den ersten Blick nicht erkenne warum (mal aussen vor gelassen, dass es unnötig ist). Auch würde mich das zugrunde liegende Bild mal interessieren! |
Re: Image Canvas Pixel in Memo
Es scheint eine Art Verschlüsselung ähnlich
![]() |
Re: Image Canvas Pixel in Memo
hoi,
vllt. brauchst du ja auch die anderen Farbanteile (R + G) dazu, und so zusagen aus der Summer aller wird der entsprechende Hex Wert gebildet der wiederum einem Char entspricht. cya |
Re: Image Canvas Pixel in Memo
Hmm die Tips waren schon nicht schlecht habe das jetzt nen wenig verbessert.
Aber das Problem ist noch nicht gelöst. Und das ganze ist im moment zu Testzwecken, in dem Bild sollen später ganze Datenpakete gespeichert werden. Wenn ich per Showmessage den jeweiligen Chr ausgeben lasse dann funktioniert es.
Delphi-Quellcode:
Mit Showmessage wird immer der richtige Chr angezeigt, aber ich muss das ganze ja in den string kriegen und das will nicht klappen.
procedure TForm15.Button2Click(Sender: TObject);
var color: TColor; B, Y, X: Integer; hex, s, t:string; begin for Y := 0 to Image1.Height-1 do begin for X := 0 to Image1.Width-1 do begin color:=image1.Canvas.Pixels[X,Y]; B := GetBValue(color); t:=Chr(B); --->>> Showmessage(t); s:=s+t; end; Memo1.Lines.add(s); s:=''; end; end; |
Re: Image Canvas Pixel in Memo
Du initialisierst s nicht. Ich bin gerade unsicher, ob das für lokale Strings nötig ist, aber setz vor deine Schleifen mal ein "s := '';". Ansonsten ist das Zusammenbauen mit "s := s + t" an sich nicht falsch, wenn auch nicht gerade speicherfreundlich.
Edit: Und gewöhne dir in deinem eigenen Interesse eine Codeformatierung an. Erhöht die Lesbarkeit gewaltig!
Delphi-Quellcode:
procedure TForm15.Button2Click(Sender: TObject);
var color: TColor; B, Y, X: Integer; hex, s, t:string; begin for Y := 0 to Image1.Height-1 do begin s := ''; for X := 0 to Image1.Width-1 do begin color := image1.Canvas.Pixels[X, Y]; B := GetBValue(color); t := Chr(B); //Showmessage(t); s := s + t; end; Memo1.Lines.add(s); end; end; |
Re: Image Canvas Pixel in Memo
Zitat:
PS: Müsste es bei deiner Sig nicht "to breakfast" heißen? |
Re: Image Canvas Pixel in Memo
Mh, dann ists seltsam :gruebel:
Zitat:
|
Re: Image Canvas Pixel in Memo
Hmm, es fehlt noch etwas an der richtigen Strategie für Steganographie.
Also man darf/sollte ja nur das niederwertigste Bit einer Farbe verwenden, andernfalls fällt es auf. Pro Pixel sind es drei Grundfarben, also wäre 3 Bit möglich. Man könnte aus den 3 Bits ein Nutzdatenbit über einen Mehrheitsentscheid machen. Nutzbit ist dann True, wenn mehr als ein Farbbit gesetzt ist. R|G|B Nutzbit 0|0|0 => 0 0|1|0 => 0 1|1|0 => 1 .... Durch dieses Verfahren werden die Daten verschleiert, so dass ein potentieller Lauscher nicht gleich weiss, wie die Nutzdaten codiert sind. |
Re: Image Canvas Pixel in Memo
Hmm ja das soll ja erstmal keine Verschlüsselung sein sondern nur Daten sollen in dem Bild sein.
Und mit den Tips hat es leider noch nicht hingehauen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:07 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