
#C# #CSharp #흑백이미지만들기 #이미지흑책처리
포스팅 목차 바로가기
안녕하세요, 배곧동개발자 입니다.
이미지 처리를 하다보면 간혹 흑백으로 이미지를 바꿔줘야 하는 경우가 있습니다. 뭐 여러 이미지 편집 프로그램을 통하면 순식간에 완료 되겠으나 프로그램 내에서 필요에따라 실시간으로 바꿔줘야 되는 경우도 있지요.
바로 그럴때에 사용하게되는 흑백이미지처리 로직을 알려드릴까합니다.
1. 흑백이미지 변환 로직
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;
}
로직이 다소 복잡한가? 싶지만 굳이 이해하고 넘어가지 않으셔도 됩니다. 사용만 잘 하시면 되요.

하지만 굳이 설명을 조금 해드리자면 비트맵의 이미지를 ColorMatrix를 이용해서 회색으로 마스킹한다고 생각하시면 됩니다. 따로 어디서 컴포넌트를 다운받거나 임포트해서 사용하는 것이 아니라 System.Drawing.Imaging 아래에 있는 내장함수인지라 사용도 용이합니다.
2. 사용예시
비트맵의 이미지를 파라미터로 이용해서 해당 함수를 실행하게되면 아래와 같이 변환되는걸 보실 수 있으실거에요.

“비트맵형식의 이미지” 라는것에서 조금 의아해하실 수 있겠지만 추후에 비트맵 포멧이 관련되서도 포스팅하나 이쁘게 해보겠습니다. 우선은 그냥 사용해주세요.
3. 마무리
항상 하는 말이지만, 이런 로직들 잘 모아놓으시면 그것이 바로 개발실력입니다. 인덱싱을 해놓으시던 git에 긁어놓으시던 많이 많이 쌓아두시고 나중에 필요할 때 냉장고에서 간식 꺼내먹듯 하나하나 사용하시길바래요.
이만, 배곧동개발자 였습니다.