2012-10-30 6 views
0

I 출력의 내 느낌은 다음과 같은 것이 있지만, 8 비트 값 (아래)를 추출하는 방법이 있습니다비트 맵의 ​​C#의 RGB 값을 얻기

010 020 030 = Specific Colour 
135 250 250 = Specific Colour 

나는 반환이 방법을 배열의 8 비트 값 - 8 비트 값의 3 개 세트가 모두 서로 일치하여 색상을 형성하기 때문에 메서드가 다차원 배열의 8 비트 값을 반환하지 않을까요?

현재 방법 :

private static byte[] GetColorData(Bitmap bmp) 
     { 
      Rectangle rect = new Rectangle(0, 0, bmp.Width, bmp.Height); 
      BitmapData bmpdata = bmp.LockBits(rect, ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb); 

      IntPtr ptr = bmpdata.Scan0; 
      int bytes = bmpdata.Stride * bmp.Height; 
      byte[] results = new byte[bytes]; 
      Marshal.Copy(ptr, results, 0, bytes); 

      bmp.UnlockBits(bmpdata); 
      return results; 
     } 

전류 출력 방법 :

100 
101 
000 
255 
250 
+1

1 차원 배열을 선언하고 있습니다. – Paparazzi

+1

출력을 원하는 * 너 *? –

답변

1

비트 맵의 ​​색상 값 바이트 단지 배열된다. 그들이 어떻게 그룹화되어야하는지에 대한 가치의 해석에 달려 있습니다. 코드는 명시 적으로 이미지를 24bpp RGB로 변환하므로 그룹화는 사용자가 결정합니다.

또한 byte[]을 반환합니다. 정의에 따라 하나의 차원 만 있습니다. 3 차원 배열이 필요하면 자신을 만들고 results의 값을 새 다차원 배열에 직접 추가해야합니다.

0

요청 된 방식으로 픽셀 데이터를 읽을 때, 요청 된 데이터를 각 바이트 - 트리플렛이 1 픽셀을 정의하는 바이트 배열로 가져옵니다.

픽셀 당 Tuple<byte,byte,byte> 인스턴스를 만들 수 있습니다.이 인스턴스에서 값을 픽셀 단위로 그룹화하고 ICollection<Tuple<byte,byte,byte>>을 반환하면 그룹화 된 방식으로 모든 픽셀을 얻을 수 있습니다.

관련 문제