I have the following code for copying the content of a byte array into a struct array. However when I use it I receive an "Index out of range exception". What is wrong?
public struct pix 
{ 
    public byte b; 
    public byte g; 
    public byte r;
};
namespace ConsoleApplication4
{ 
    class Program
    {
       static  byte[] bmp = File.ReadAllBytes("D:\\x.bmp"); 
       static pix[,] img; 
       static void Main(string[] args)
       {
           int wi = 320; 
           int hi = 240; 
           int i=54; 
           img = new pix[wi-1, hi-1];
           Console.Write(bmp.Length-54); 
           for (int y = hi-1; y > 0; y--)
           {
               for (int x = wi-1; x > 0; x--)
               {
                   img[x,y].b = bmp[i]; 
                   img[x,y].g = bmp[i + 1]; 
                   img[x,y].r = bmp[i + 2];
                   i = i + 3; 
               }       
          } 
    }
}
 
     
    