Autor Beitrag
Dee-Jay
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Di 10.03.09 23:42 
Hallo Forum!
Ich muss in meinem Informatikkurs morgen früh ein Referat über Transponierte Bitmaps halten. Bei dieser Methode der Veschlüsselung geht es darum, einzelne Pixel eines Bitmaps wiederholt zu verschieben, sodass nach einige Durchgängen ein Verschlüsseltes Bild entsteht. Habe schon mit Hilfe der vorgegebenen Materialien etwas auf die Reihe bekommen. Jetzt habe ich das problem, dass ich das Verschlüsselte bild nicht mehr Entschlüsseln kann. Ich hoffe ihr könnt mir helfen, hier der Code:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
procedure TForm1.Button1Click(Sender: TObject);
var c:tcolor;
    w,I,J,I2,J2:Integer;
begin
 w:=image1.width;
 for i:=0 to w-1 do
  begin
   for J:=0 to w-1 do
    begin
     c:=image1.canvas.pixels[J,I];
     I2:=J;
     J2:=I+J;
     If I2 > w then I2:=I2-w;
     If J2 > w then J2:=J2-w;
     Image2.canvas.pixels[J2,I2]:=C;
    end{for j}
   image2.refresh;
   end;
  For I:=0 to w-1 do
   For J:=0 to w-1 do
    Image1.canvas.pixels[I,J]:= Image2.canvas.pixels[I,J];
end;

Vielen Dank im Vorraus!
Gruß Dee-Jay

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt

---Moderiert von user profile iconNarses: Beiträge zusammengefasst und Titel "entdrängelt"---

ok hat sich erledigt habs geschafft!
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: Mi 11.03.09 13:18 
Hallo und :welcome: im DF,

könntest du vielleicht deinen code hier poasten damit alle user einen nutzen daraus ziehen können?

ein paar verbessungsvorschläfge:

vielleicht kannst du scanline verwenden statt pixels dadurch würde dein code um einiges schneller werden.
ich nehm an das dein image2 nur als zwischenspeicher für dein bild dient. Wenn ja kannst du das wegschmeißen und dafür ein TBitmap-Objekt lokal anlegen.
Das die schleifen kannst mit dem Image1.canvas.pixxels[I,J] := Image2.canvas.pixels[I,J]; kannst du durch diesen diesen befehl: Image1.canvas.draw(0,0,Bitmap); ersetzen. (ich hab als parameter einfahc bitmap geschrieben damit du weißt welchen parameter die funktion erwaretet und in hoffnung das du meinen zweiten vorschlag umsetzt ;-) )

lg elundril

_________________
This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.