2012-02-18 12 views
0

사진을 가져 와서 RGB 값을 결정하기 위해 각 픽셀을 검사하고 다음 픽셀을 원래 순서대로 유지하는 배열 또는 유사한 데이터 구조에 각 픽셀 (또는 이에 상응하는 RGB 값)을 넣기를 원합니다.어떻게 이미지의 픽셀을 분리하여 C# 배열에 넣을 수 있습니까?

제가 알아야 할 가장 중요한 것은 픽셀을 분리하고 각 픽셀 값을 결정하는 방법입니다.

답변

2
 Bitmap img = (Bitmap)Image.FromFile(@"C:\..."); 

     Color[,] pixels = new Color[img.Width, img.Height]; 

     for (int x = 0; x < img.Width; x++) 
     { 
      for (int y = 0; y < img.Height; y++) 
      { 
       pixels[x, y] = img.GetPixel(x, y); 
      } 
     } 
0

upvoted 대답의 빠른 버전 :

public static int[][] ImageToArray(Bitmap bmp) { 
     int height = bmp.Height; // Slow properties, read them once 
     int width = bmp.Width; 
     var arr = new int[height][]; 
     var data = bmp.LockBits(new Rectangle(0, 0, width, height), 
        System.Drawing.Imaging.ImageLockMode.ReadOnly, 
        System.Drawing.Imaging.PixelFormat.Format32bppArgb); 
     try { 
      for (int y = 0; y < height; ++y) { 
       arr[y] = new int[width]; 
       System.Runtime.InteropServices.Marshal.Copy(
        (IntPtr)((long)data.Scan0 + (height-1-y) * data.Stride), 
        arr[y], 0, width); 
      } 
     } 
     finally { 
      bmp.UnlockBits(data); 
     } 
     return arr; 
    } 

사용 Color.FromArgb()을 컬러로 픽셀 값을 매핑합니다.

관련 문제