[C#] 이미지를 흑백으로 바꾸기!

#흑백이미지 #회색이미지? #비트맵 #ColorMatrix #흑백사진 #흑백모드 #ImageAttributes #씨샵

포스팅 목차 바로가기

안녕하세요, 배곧동개발자 입니다.

사진을 다루던가 이미지 편집을 하는 로직을 개발하고 계신 분이라면 흑백모드가 필요한 경우가 있지요.

제가 흑백모드를 하는 로직을 들고와봤습니다.


1. 흑백모드 함수

음, 사실 별게 없습니다. 비트맵 형식의 이미지를 ColorMatrix를 통해서 회색으로 슝 바꾸는게 끝이에요.

private Bitmap grayScale(Bitmap basebit)
{
    Bitmap newbit = new Bitmap(basebit.Width, basebit.Height);
    Graphics g = Graphics.FromImage(newbit);
    ColorMatrix cMatrix = new ColorMatrix(
        new float[][]
        {
            new float[] {.3f, .3f, .3f, 0, 0},
            new float[] {.59f, .59f, .59f, 0, 0},
            new float[] {.11f, .11f, .11f, 0, 0},
            new float[] {0, 0, 0, 1, 0},
            new float[] {0, 0, 0, 0, 1}
    	});
    ImageAttributes attributes = new ImageAttributes();
    attributes.SetColorMatrix(cMatrix);
    g.DrawImage(basebit, new Rectangle(0, 0, basebit.Width, basebit.Height), 0, 0, basebit.Width, basebit.Height, GraphicsUnit.Pixel, attributes);
    g.Dispose();
    return newbit;
}

따로 받아오는 컴포넌트도 아니고 using System.Drawing.Imaging; 를 참조하여 사용할 수 있기에 아주 간단하지요.


2. 결과

이거는 예전에 브라우저 흑백모드를 구현하느냐 만들었던 프로그램인데, 왼쪽 브라우저를 주기마다 캡쳐하여 흑백으로 변환 후 오른쪽에 뿌려주는 프로그램이였습니다.

이런식으로 다방면으로 활용이 가능하다는 사실!


어때요? 단순히 캡쳐 후 위에 함수에만 넣어주면 흑백 모드로 변하는게 너무 쉽지 않나요? 하지만 모르는 사람은 못쓴다는거- 이제 아셨으니 간단히 흑백이미지 만들어봅시다!

이만, 배곧동개발자 였습니다.

Leave a Comment