C#

[C#] 흑백이미지 변환 로직

#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에 긁어놓으시던 많이 많이 쌓아두시고 나중에 필요할 때 냉장고에서 간식 꺼내먹듯 하나하나 사용하시길바래요.

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

배곧동개발자

Recent Posts

[MSSQL] 넓은 영어, 띄어쓰기 영어 입력되는 현상 (전각입력/문자폭)

#MSSQL #문자폭 #영어넓이 #쿼리입력안됨 1. MSSQL 영어 입력 안되는 현상 MSSQL을 주로 쓰고 있는데 MSSMS에서…

1개월 ago

[이미르] 다니아믹 키 확실한 해결방법 (커스텀토큰/접속불가)

#레전드오브이미르 #다이나믹키가다릅니다 #커스텀토큰 #접속불가 #오류 #해결방법 1. 다이나믹 키 더럽다! 유저의 다이나믹키가 다릅니다. 위메이드의 레전드…

1개월 ago

[이미르] 대기열 왜 이렇게 길어졌나? (중국작업장/매크로)

#레전드오브이미르 #작업장 #쌀먹 #중국 #매크로 #대기열 1. 운영 문제 있네? 이제 오픈 2주차에 들어온 위메이드의…

2개월 ago

[이미르] 엠틱을 챙겨보자 (스토리덱/마나회복력)

#레전드오브이미르 #엠틱 #마나회복력 #스토리덱 1. 마나가 너무 부족해! 레전드 오브 이미르는 스킬 위주의 액션 게임이라고…

2개월 ago

[이미르] 시구르드와 대화 (위치/메인퀘스트19-19)

#레전드오브이미르 #파괴가남긴것 #시구르드 #19-19 #위치 1. 파괴가 남긴 것 레전드 오브 이미르 메인퀘스트 19-19인 "파괴가…

2개월 ago

[이미르] 트롤의 비밀상자, 트롤의 유적상층 보물상자 위치

#레전드오브이미르 #트롤의비밀상자 #트롤의유적상층 #보물상자 #위치 1. 트롤의 비밀 상자 이번에 알아 볼 의뢰게시판 의뢰는 바로…

2개월 ago