#C# #CSharp #흑백이미지만들기 #이미지흑책처리
포스팅 목차 바로가기
안녕하세요, 배곧동개발자 입니다.
이미지 처리를 하다보면 간혹 흑백으로 이미지를 바꿔줘야 하는 경우가 있습니다. 뭐 여러 이미지 편집 프로그램을 통하면 순식간에 완료 되겠으나 프로그램 내에서 필요에따라 실시간으로 바꿔줘야 되는 경우도 있지요.
바로 그럴때에 사용하게되는 흑백이미지처리 로직을 알려드릴까합니다.
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 아래에 있는 내장함수인지라 사용도 용이합니다.
비트맵의 이미지를 파라미터로 이용해서 해당 함수를 실행하게되면 아래와 같이 변환되는걸 보실 수 있으실거에요.
“비트맵형식의 이미지” 라는것에서 조금 의아해하실 수 있겠지만 추후에 비트맵 포멧이 관련되서도 포스팅하나 이쁘게 해보겠습니다. 우선은 그냥 사용해주세요.
항상 하는 말이지만, 이런 로직들 잘 모아놓으시면 그것이 바로 개발실력입니다. 인덱싱을 해놓으시던 git에 긁어놓으시던 많이 많이 쌓아두시고 나중에 필요할 때 냉장고에서 간식 꺼내먹듯 하나하나 사용하시길바래요.
이만, 배곧동개발자 였습니다.
1. 세븐나이츠 리버스 오늘, 2025년 5월 15일에 오픈한 세븐나이츠 리버스! 다들 시작하셨나요? 제이브를 뽑고싶은데 아직…
#css #spin #animation #spin 1. 이미지가 빙빙돈다! 어? 이게 뭐지? 이미지가 빙빙 돕니다. 나 이거…
#노드js #nodejs #에러 #오류 #npm 1. npm.ps1 Error node js 를 설치 후 npm을 이용하려…
#MSSQL #문자폭 #영어넓이 #쿼리입력안됨 1. MSSQL 영어 입력 안되는 현상 MSSQL을 주로 쓰고 있는데 MSSMS에서…
#레전드오브이미르 #다이나믹키가다릅니다 #커스텀토큰 #접속불가 #오류 #해결방법 1. 다이나믹 키 더럽다! 유저의 다이나믹키가 다릅니다. 위메이드의 레전드…