안녕하세요. 저는 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로 변환 할 필요가 있는지, 또는 이미지의 이름을 잘못 지정했거나 파일을 잘못 읽으려는 경우 잘 모르겠습니다. 나는 이것을 작동시키기 위해 많은 다른 방법을 시도했지만, 행운이 없었습니다. 어떤 도움이라도 좋을 것이고, 많이 감사 할 것입니다.감사합니다.
어디서 오류가 있습니까? 예외의 스택 추적을 넣을 수 있습니까? – maxivis
이 부분에 문제가 있습니다. 이미지를 BufferedImage로 변환해야한다고 말할 수 있습니다. BufferedImage image = ImageIO.read (this.getClass(). getResource ("imag1")); – Dan