Q&A

  • 사진을 흑백으로 바꾸려는데...
안녕하세요..?
칼라 사진을 흑백으로 바꾸려구 하거든요...
제가 코딩한 건 아래와 같습니다..
--------------------------------------------
var
  Form1: TForm1;
  x, y:integer;
  red, green, blue, black, color:TColor;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
        image2.Height:=image1.Height;
        image2.Width:=image1.Width;

        for x:=0 to image1.Height-1 do
        begin
                for y:=0 to image1.Width-1 do
                begin
                        color:=image1.Canvas.Pixels[x,y];
                        red:=color And $0000FF;
                        green:=(color And $00FF00) Shr 8;
                        blue:=(color And $FF0000) Shr 16;
                        black:=(red+green+blue) Div 3;
                        image2.Canvas.Pixels[x,y] := black * $010101;
                end;
        end;
end;

end.
-----------------------------------------------
그리고 에러는 아래와 같이 나고요..
-----------------------------------------------
[Warning] Unit1.pas(34): For loop control
variable must be simple local variable
[Warning] Unit1.pas(36): For loop control
variable must be simple local variable
----------------------------------------------
여기서 34, 36번째줄은 For문이 시작되는 부분이거든요..
변수 선언할 때 데이터형을 integer, double, TCanvas,
TColor 모두 해봤는데..계속 에러납니다...ㅠ.ㅠ...
에러 뜻도 이해를 못하겠구요...
뭐가 잘못된건지..쉽게 설명해주시면..감사..^^..
그럼 좋은 하루 되세요..
꾸벅~
1  COMMENTS
  • Profile
    김도형 2002.05.06 21:22
    팁란에서 '흑백' 으루 검색하믄 나옵니다...

    아래건 퍼온겁니다...

    Name     Black}{ole   [blackhole@nilex.co.kr]


    Subject     [팁] 컬러그림을 흑백으로..  


    컬러이미지를 흑백이미지로..


    var
    GrayPal: TMaxLogPalette;
    i: Integer;
    begin
    Image1.Picture.LoadFromFile( 'sample.bmp' );

    for i := 0 to 255 do
    with GrayPal.palPalEntry[i] do
    begin
    peRed := i;
    peGreen := i;
    peBlue := i;
    peFlags := 0;
    end;
    GrayPal.palVersion := $0300;
    GrayPal.palNumEntries := 256;

    Image2.Picture.Bitmap.PixelFormat := pf8bit;
    Image2.Picture.Bitmap.Palette := CreatePalette( PLogPalette(@GrayPal)^ );
    Image2.Picture.Bitmap.Width := Image1.Picture.Bitmap.Width;
    Image2.Picture.Bitmap.Height := Image1.Picture.Bitmap.Height;

    Image2.Picture.Bitmap.Canvas.Draw( 0, 0, Image1.Picture.Bitmap );
    end;