C#에서 16비트 회색조 이미지 만들기
RGB 구성 요소를 하나씩 조정하지 않고 이미지를 16비트 회색조 형식으로 변환하면 System.Drawing.Imaging.PixelFormat
열거형을 직접 사용할 수 있습니다.
회색조 비트맵 만들기
<code class="language-csharp">Bitmap grayScaleBP = new System.Drawing.Bitmap(2, 2, System.Drawing.Imaging.PixelFormat.Format16bppGrayScale);</code>
이렇게 하면 빈 16비트 회색조 비트맵이 생성됩니다.
기존 이미지 변환
기존 컬러 이미지를 회색조로 변환하려면 해당 픽셀을 반복하고 각 픽셀의 색상을 회색조로 설정하여 원래 색상에서 밝기 정보를 추출할 수 있습니다. (픽셀 순회 및 그레이스케일 변환에 대한 코드 예제는 원본 기사에 전체 코드가 제공되지 않고 비트맵을 생성하는 코드만 제공되므로 여기에서는 생략됩니다.)
최적화 계획
회색조 변환 속도를 높이려면 ColorMatrix
클래스를 사용하여 원본 이미지를 그리기 전에 회색조 변환을 적용할 수 있습니다.
<code class="language-csharp">public static Bitmap MakeGrayscale3(Bitmap original) { Bitmap newBitmap = new Bitmap(original.Width, original.Height); using (Graphics g = Graphics.FromImage(newBitmap)) { ColorMatrix colorMatrix = 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} }); using (ImageAttributes attributes = new ImageAttributes()) { attributes.SetColorMatrix(colorMatrix); g.DrawImage(original, new Rectangle(0, 0, original.Width, original.Height), 0, 0, original.Width, original.Height, GraphicsUnit.Pixel, attributes); } } return newBitmap; }</code>
이 방법은 ColorMatrix
을 활용하여 이미지를 그레이스케일로 효율적으로 변환합니다.
위 내용은 C#에서 이미지를 16비트 회색조로 효율적으로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!