2015-01-10 1 views
-2

for 루프가 도달 할 때 getpixel 메서드를 사용하여 이미지의 픽셀 값을 2 차원 배열에 저장하려고합니다. 아무 것도 알아볼 수없는 예외가 발생합니다.getfixel 메서드의 outofrange 예외

// 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

당신은 폭과 높이로 xy를 반복하는,하지만 당신은 픽셀에 액세스하기 위해 그들에게 다른 방법을 사용합니다.

루프 높이와 폭 xy :

// 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

그의 배열은'row, col'에 의해 처리되고 픽셀은'col, row'에 의해 처리되기 때문에 그는'pic [y, x] = p.ToString(); '을하고 싶다고 생각합니다. 나는 그의 배열을'[width, height]'또는'[height, width]'로 정의했는지에 달려 있다고 생각한다. –

+0

@JimMischel : 가능합니다. 그러나 범위를 벗어나는 가장 큰 이유는 배열이'[width, height]'로 선언 되었기 때문입니다. 배열이 큰 경우, 원래의 코드는'GetPixel'이 이미지 외부에서 읽으려고 할 때'ArgumentOutOfRangeException'을줍니다. – Guffa

+0

OK Mr Guffa 나는 당신의 루프를 사용했고, 당신의 도움에 감사드립니다. –

관련 문제