2013-04-22 1 views
0

안녕하세요. 저는 Java에서 수업을 듣고 있으며 프로그래밍에 상당히 익숙합니다.Java에서 이미지를로드하는 중 문제가 발생했습니다.

프로그램을 작성하려고 할 때 사용자에게 다른 이미지를로드하고 RGB 값을 다차원 배열로 반환하도록 요청합니다. 나는 두 부분을 따로 따로 가지고 있지만 두 부분을 함께 사용하는 데 문제가 있습니다.

나는 RGB values-

public void setup(Image image1, Image image2) 
{ 
    try { 
      // get the BufferedImage, using the ImageIO class 
      BufferedImage image = 
      ImageIO.read(this.getClass().getResource("imag1")); 
      marchThroughImage(image); 
     } catch (IOException e) { 
      System.err.println(e.getMessage()); 
     } 
     } 

    private void marchThroughImage(BufferedImage image) { 
    int w = image.getWidth(); 
    int h = image.getHeight(); 
    int [][] pixels = new int [h][w]; 
    int lenRows = pixels.length; 
    int lenColums = pixels[0].length; 
    System.out.println("width, height: " + w + ", " + h); 

    for (int i = 0; i < h; i++) { 
     for (int j = 0; j < w; j++) { 
      System.out.println("x,y: " + j + ", " + i); 
      int pixel = image.getRGB(j, i); 
      printPixelARGB(pixel); 
      pixels [i][j] = image.getRGB(j,i); 
      System.out.println(""); 
      System.out.println("there are "+lenRows+" rows"); 
      System.out.println("there are "+lenColums+" colums"); 
     } 
    } 
} 

public void printPixelARGB(int pixel) { 
    int alpha = (pixel >> 24) & 0xff; 
    int red = (pixel >> 16) & 0xff; 
    int green = (pixel >> 8) & 0xff; 
    int blue = (pixel) & 0xff; 
    System.out.println("argb: " + alpha + ", " + red + ", " + green + ", " + blue); 
} 

}

이를 얻기 위해 그리고 다른 클래스에 이미지를 전송

void imageload1() 
    { 
     fd.show(); 
     if(fd.getFile() == null) 
     { 
      Label1.setText("Try again"); 
     }//end if 
     else 
     { 
      String d = (fd.getDirectory() + fd.getFile()); 
      Toolkit toolkit = Toolkit.getDefaultToolkit(); 
      image1 = toolkit.getImage(d); 
      canvas1.setImage(image1); 
      canvas1.repaint(); 

      GetRGB testRGB; 
      testRGB = new GetRGB(); 
      testRGB.setup(image1, image2); 

     }//end else 
    }//end imageLoad1 

toolkit.getImage-

를 사용하여 하나 개의 클래스에 이미지를로드 나에게 "java.lang.IllegalArgumentException"오류를 준다. 문제는 이미지를 읽을 수 없다는 것입니다. 이미지를 BufferedImage로 변환 할 필요가 있는지, 또는 이미지의 이름을 잘못 지정했거나 파일을 잘못 읽으려는 경우 잘 모르겠습니다. 나는 이것을 작동시키기 위해 많은 다른 방법을 시도했지만, 행운이 없었습니다. 어떤 도움이라도 좋을 것이고, 많이 감사 할 것입니다.

감사합니다.

+0

어디서 오류가 있습니까? 예외의 스택 추적을 넣을 수 있습니까? – maxivis

+0

이 부분에 문제가 있습니다. 이미지를 BufferedImage로 변환해야한다고 말할 수 있습니다. BufferedImage image = ImageIO.read (this.getClass(). getResource ("imag1")); – Dan

답변

0

From ImageIO.read javadoc 's : "예외 : IllegalArgumentException - 입력이 null 인 경우", this.getClass(). getResource ("imag1")가 null을 리턴하므로 문제가 발생합니다. 우선 "imag1"(.png, .jpg 등)에 대한 확장자를 지정하고 테스트해야합니다. 문제가 지속되면 이미지를 찾는 경로를 확인하십시오 (코드에서 볼 수 있듯이 "setup"메서드가 포함 된 클래스와 같은 디렉토리에 있어야합니다.

+0

고마워요! 늦게 회신 해 주셔서 유감스럽게 생각합니다. 나는 내 주변의 일부를 가지고 있었고 나는 물건을 적절히 통과시키지 못했다. 그것 모두가 지금 일하고있어. everyones 도움에 감사드립니다! – Dan