2015-01-10 103 views
-2

我試圖將圖像的像素值存儲到二維數組中使用getpixel方法for循環時[0,240] 我得到了outofrange異常任何人都可以幫助我?getpixel方法中的異常異常

// Loop through the images pixels to store in array. 
       for (x = 0; x < image1.Height; x++) 
       { 
        for (y = 0; y < image1.Width; y++) 
        { 
         Color p = ((Bitmap)image1).GetPixel(x, y); 
         pic[x,y] = p.ToString(); 
        } 
       } 
+0

什麼是'pic'的大小? – Reti43

回答

1

你循環x的高度和y寬度,但你使用它們的其他的方式來訪問像素。

x寬度和y身高:

// Loop through the images pixels to store in array. 
      for (y = 0; y < image1.Height; y++) 
      { 
       for (x = 0; x < image1.Width; x++) 
       { 
        Color p = ((Bitmap)image1).GetPixel(x, y); 
        pic[x,y] = p.ToString(); 
       } 
      } 
+0

雖然我懷疑他想做'pic [y,x] = p.ToString();'因爲他的數組可能由'row,col'尋址,像素由'col,row'尋址。我想這取決於他是將數組定義爲'[width,height]'還是'[height,width]'。 –

+0

@JimMischel:可以,但超出範圍的最可能原因是數組聲明爲'[width,height]'。如果數組很大,那麼當GetPixel嘗試讀取圖像外部時,原始代碼會給出'ArgumentOutOfRangeException'。 – Guffa

+0

好的Guffa先生我用你的循環,它工作得很好,謝謝你的幫助。 –