Filtr Jasność

0

Dzień dobry :)

moim zadaniem jest zrobić filtr regulujący jasność fotografi..
wykombinowałam coś takiego:

procedure JasnoscScanLine( rysunek: TImage);
var x,y: integer;
P: PByteArray;
r,g,b: integer;
value: real;
begin
rysunek.Picture.Bitmap.PixelFormat :=pf24Bit;

with rysunek.Picture.Bitmap do
for y:=0 to Height-1 do
begin
P :=ScanLine[y];
x:=0;
repeat
r := round(P[x+2] + value);
g := round(P[x+1] + value);
b := round(P [x] + value);

if r>255 then r:=255;
if r<0 then r:=0;
if g>255 then g:=255;
if g<0 then g:=0;
if b>255 then b:=255;
if b<0 then b:=0;

P[x+2] :=r;
P[x+1] :=g;
P[x] :=b;
x := x+3;
until x>(Width-1)*3;
end;
rysunek.Invalidate;
end;

nie mam zielonego pojęcia czy to jest dobrze czy źle .. robiłam to na czuja..
pytanie ... a jest wartością ustalaną przez spinedit... wiem ze mam to powiązać a:=Spinedit1.Value; tylko gdzie ja mam to wstawić ??? w obsłudze spin edita ... key down, key up?

pytanie 2
mam da image w 1 jest otwarta fotka w drugim fotka poddawana obróbce ... chce umieścić undo ... nie wiem jak pomocy...

pytanie 3 czy musze robić plik tymczasowy??

0

Oczywiście musiała być muka :))) pomyliłam pliki ten kod wygląda tak:

procedure Jasnosc(rysunek: TImage);
var x,y: integer;
P: PByteArray;
r,g,b: integer;
a: real;
begin
rysunek.Picture.Bitmap.PixelFormat :=pf24Bit;

with rysunek.Picture.Bitmap do
for y:=0 to Height-1 do
begin
P :=ScanLine[y];
x:=0;
repeat
r := round(P[x+2] + a);
g := round(P[x+1] + a);
b := round(P [x] + a);

if r>255 then r:=255;
if r<0 then r:=0;
if g>255 then g:=255;
if g<0 then g:=0;
if b>255 then b:=255;
if b<0 then b:=0;

P[x+2] :=r;
P[x+1] :=g;
P[x] :=b;
x := x+3;
until x>(Width-1)*3;
end;
rysunek.Invalidate;
end;

0

http://4programmers.net/faq.php/id=663
http://4programmers.net/faq.php/id=222

poza tym niedawno o to pytano na lamach forum

0

nie mam zielonego pojęcia czy to jest dobrze czy źle .. robiłam to na czuja..
pytanie ... a jest wartością ustalaną przez spinedit... wiem ze mam to powiązać a:=Spinedit1.Value; tylko gdzie ja mam to wstawić ??? w obsłudze spin edita ... key down, key up?

Sugerowałbym w OnChange.

pytanie 2
mam da image w 1 jest otwarta fotka w drugim fotka poddawana obróbce ... chce umieścić undo ... nie wiem jak pomocy...

Najprościej jest to zrobić zapisując (w pamięci albo w pliku, zależy od koncepcji i tego, co dla Ciebie jest ważniejsze - szybkość czy zużycie pamięci) ten obrazek po każdym kroku (robić kilka obrazków, nie nadpisywać ostatnio zapisanego) i przy klikaniu Undo ładować poprzedni obrazek

pytanie 3 czy musze robić plik tymczasowy??

Nie musisz, możesz stworzyć zmienną TBitmap, wszystko zależy od koncepcji.
//Lofix - wyprzedziłeś mnie :)

0

O kurcze jacy kochani jesteście [rotfl]

zadeklarowałam to cholerne a w on change i nic
mam taki błąd...a raczej błędy;

[Warning] Unit1.pas(122): Variable 'a' might not have been initialized
[Hint] Unit1.pas(211): Variable 'a' is declared but never used in 'TForm1.SpinEdit1KeyUp'
[Hint] Unit1.pas(222): Value assigned to 'a' never used

0

[Warning] Unit1.pas(122): Variable 'a' might not have been initialized
[Hint] Unit1.pas(211): Variable 'a' is declared but never used in 'TForm1.SpinEdit1KeyUp'
[Hint] Unit1.pas(222): Value assigned to 'a' never used

To nie błedy tylko podpowiedzi i ostrzeżenia.

0

dlamnie to jest czarna magia :))
w szkole miałam tylko operacje na bazach danych a tu..
oj ja biedna :(

0

[Warning] Unit1.pas(122): Variable 'a' might not have been initialized
[Hint] Unit1.pas(211): Variable 'a' is declared but never used in 'TForm1.SpinEdit1KeyUp'
[Hint] Unit1.pas(222): Value assigned to 'a' never used

Dobra, skoro czarna magia to tłumaczę:
[Ostrzeżenie] Unit1.pas(122): Zmienna 'a' może nie zostać zainicjalizowana
[Wskazówka] Unit1.pas(211): Zmienna 'a' jest zadeklarowana, ale nigdy nie została użyta w 'TForm1.SpinEdit1KeyUp'
[Wskazówka] Unit1.pas(222): Wartość przypisana do zmiennej 'a' nigdy nie została użyta

0

hihihi :)) niom kurcze dziekuje za odpowidz ale przetłumaczyc to ja umiem .. :)) .. mam problem co z tym zrobić :))

0

Nic z tym nie rób bo ci to nie przeszkadza :) , ew. usuń deklaracje tej "a'' z drugiej podpowiedzi (bo jej nie używasz)

0

Nic z tym nie rób bo ci to nie przeszkadza :) , ew. usuń deklaracje tej "a'' z drugiej podpowiedzi (bo jej nie używasz)

Albo treść procedury ująć w dyrektywy kompilatora powodujące wyłączenie ostrzeżeń (nie polecam), ale oto przykład:

{$Hints Off}
{$Warnings Off}
// tutaj kod procedury
{$Hints On}
{$Warnings On}

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