Timage

0

w faq znalazłem takie coś

var
WysObr, SzeObr : Integer;
Kolor : TColor;
R, G, B :byte;

begin
WysObr := Image1.Height - 1;
SzeObr := Image1.Width - 1;

for SzeObr := 0 to Image1.Width do
for WysObr := 0 to Image1.Height do

Begin
Kolor := Image1.Picture.Bitmap.Canvas.Pixels[SzeObr, WysObr];
R := GetBValue(Kolor);
G := GetBValue(Kolor);
B := GetBValue(Kolor);
Image1.Picture.Bitmap.Canvas.Pixels[SzeObr, WysObr] := RGB(R, G, B);
end;

a jak cofnąć tego działanie :) zeby powrócić prawdziwe.

Aha i jak skopiować zawartość TImage

0

Nie da się..
Aby móć cofnąć taką operacją musiałbyś gdzieś w pamięci zachować obraz z przed operacji, a potem wczytać go ponownie.

ps : Jeśli ma to być procedurka konwertująca obraz do skali szarości, to jest ona dość nieudolnie napisana.

  1. Baaaardzo wolna (.pixels[])
  2. Niedokładna - tylko skladowa B gra rolę (a powinno być (R + B + G) div 3)
0

Znacznie lepiej (moim zdaniem) by było gdyby skonwertować RGB do HSV i manipulować odcieniem i nasyceniem, można wtedy uzyskać bardzo ciekawe efekty (np odcień wszystkich pikseli wystarczy zwiększyć o 180 (i ewentualnie dopasować odpowiednio do zakresu 0..360) i mamy pięknie odwrócone kolory)

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