Szyfrowanie za pomocą rysunku.

0

Mam problem - chciałbym oprogramować kodowanie tekstu jako rysunek, ale nie mam pojęcia jak umieścić na rysunku [obojętnie czy jest to TImage czy TCanvas] piksel konkretnego koloru. Czy jest jakiś sposób zapisu piksela w kolorystyce RGB? Gdzieś wydaje mi się widziałem takie coś, ale nie mogę tego znaleźć. Chodzi mi konkretnie o procedury potrafiące "wydestylować" ;] z piksela składowe R, G i B [z gotowego rysunku] jak i zapisać na rysunku taki punkt o konkretnych składowych. Z góry dzięki za pomoc.

przykład zapisu kolorów:

type pixelImage = RECORD
         R,G,B : Integer;
         end;

aby potem można było dostać się do piksela w sposób:

var Image : TImage;
var pixelImg : pixelImage

pixelImg.R := Image[x,y].R = // odczytywanie wartości składowej czerwonej i zapis do tablicy.

Sorry, że ten post jest napisany tak chaotycznie, ale mam nadzieje, że ktoś zrozumie i pomoże.

0

Przypatrz się temu. Zwróć uwagę na strukturę TTriple. Tu masz metodę o wiele wolniejszą, ale łatwiejszą.

0

a nie możesz zastosować czegoś takiego?
Image.Pixels[x,y]:= n;
gdzie n to numer koloru.. np możesz wpisać 4323 a pixel będzie miał kolor który znajduje się pod tym numerem. Jeśli chcesz kodować tekst to radził bym zamienić litery na ascii a np potem te wart. zapisać w image

Pozdrawiam ;-)

0

Właśnie o to mi chodzi, żeby zamienić litery na kod ASCII i podstawić go za składowe RGB koloru danego piksela. Nie wiem tylko w jaki sposób to oprogramować i jakich komponentów czy klas do tego użyć.

0

nie rozumiem Cię.. przecież wszystko Ci podałem :-P
wstawiasz na formę: edit, button i image
w onclick buttona dajesz:

procedure TForm1.Button1Click(Sender: TObject);
var
  i: integer;
begin
  for i:=1 to length(edit1.text) do
  image1.Canvas.Pixels[i,0]:= ord(edit1.text[i]);
end;
0

szkoda miejsca. to co podales zamienia jeden znak na jeden piksel.
w jednym kolorze mozesz przeziez zmiescic 3 znaki. :-P

Color:=RGB(  ord(S[i]),   ord(S[i+1]),   ord(S[i+2])  );

a potem przy odczycie cos w stylu:

S[1]:= chr(  GetRValue(Color)  );

i tu wykorzystujesz funkcje, o ktore pytales:
GetRValue(), GetBValue(), GetGValue()... no i oczywiscie RGB()

1 użytkowników online, w tym zalogowanych: 0, gości: 1