이미지에 Blur 효과를 주려구 합니다.
일단 코딩은 아래와 같이 했구여
SRCIMG 는 이미지 컴포넌트구 BlurConst 는 효과를 줄 픽셀에 관계된 것입니다
아래 대로 코딩했구여.. 근데 이미지가 전부 까맣게 나오네요.ㅠㅠ
P_Blur[0,j] := RGB(RS,GS,BS); 이부분을 확인해보면..
r, g, b 값이 제대로 들어간거 같은데요.ㅠㅠ
어디가 잘못된 건지... 조언 부탁드립니당..
SrcImg.Picture.Bitmap.PixelFormat := pf32bit;
for i:=0 to SRCIMG.Height - 2 - BlurConst do begin
for j := 0 to BlurConst do begin
P_Blur[j] := SrcImg.Picture.Bitmap.ScanLine[j + i];
end;
for j := 0 to SrcImg.Width - 1 - BlurConst do begin
RS:=0;
GS:=0;
BS:=0;
for k:=i to i + BlurConst do begin
for k1 := j to j + BlurConst do begin
rs := rs + GetRValue(P_Blur[k-i][k1-j]);
gs := gs + GetGValue(P_Blur[k-i][k1-j]);
bs := bs + GetBValue(P_Blur[k-i][k1-j]);
end;
end;
RS:=RS DIV ((BLURCONST+1)*(BLURCONST+1));
GS:=GS DIV ((BLURCONST+1)*(BLURCONST+1));
BS:=BS DIV ((BLURCONST+1)*(BLURCONST+1));
P_Blur[0,j] := RGB(RS,GS,BS);
end;
end;
뒤의 8바이트는 아직사용하지않기때문에
메모리 낭비가 됩니다.
SrcImg.Picture.Bitmap.PixelFormat := pf24bit;
for i:=0 to SRCIMG.Height - 2 - BlurConst do begin
for j := 0 to BlurConst do begin
// 0 <j + i <= SRCIMG.Height -1
P_Blur[j] := SrcImg.Picture.Bitmap.ScanLine[j + i];
end;
for j := 0 to SrcImg.Width - 1 - BlurConst do begin
RS:=0;
GS:=0;
BS:=0;
for k:=i to i + BlurConst do begin
for k1 := j to j + BlurConst do begin
rs := rs + GetRValue(P_Blur[k-i][k1-j]);
gs := gs + GetGValue(P_Blur[k-i][k1-j]);
bs := bs + GetBValue(P_Blur[k-i][k1-j]);
end;
end;
// Sum/Count =Avr 평균 계산 (0<= <=255)
RS:=RS DIV ((BLURCONST+1);
GS:=GS DIV ((BLURCONST+1);
BS:=BS DIV ((BLURCONST+1);
//P_Blur가 Tcolor 배열인가여???
아니면 포인터 등을 통해서 처리 해야 함..
P_Blur[0,j] := RGB(RS,GS,BS);
end;
end;
음 대충 봤는대여...
여기저기 고쳐 할부분이 많아서리..
될수 있으면 함수 단위로 올려 주시면...
보고 고쳐드리기가 쉽거든요..
자세한 것을 원하시면....
함수를 전채 올려 주세여..
그럼 즐프 하세여..