C#에서 16bit grayscale PNG 파일을 Bitmap.FromFile 또는 Image.FromFile로 읽을 시 32bit argb 4바이트로 변환되어 읽게 된다.
16bit gray 이미지를 얻기 위해서는 다음과 같이 처리한다.
Stream imageStreamSource = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read);PngBitmapDecoder decoder = new PngBitmapDecoder(imageStreamSource, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default); BitmapSource bitmapSource = decoder.Frames[0]; int stride = (int)bitmapSource.PixelWidth * (bitmapSource.Format.BitsPerPixel / 8); byte[] data = new byte[(int)bitmapSource.PixelHeight * stride]; bitmapSource.CopyPixels(data, stride, 0); |
PNG 파일을 FileStream으로 읽고 PngBitmapDecoder로 BitmapSource를 얻는다.
그후 CopyPixels로 raw데이터를 복사한다.
'프로그래밍 > C#' 카테고리의 다른 글
Window class name is not valid (0) | 2014.08.06 |
---|---|
C# array char to String 변환 (0) | 2013.08.14 |
쓰레드 종료 지연 문제 (0) | 2013.08.14 |
변수 타입 (0) | 2013.08.14 |