こんにちは、私は Java のクラスを受講しており、プログラミングに関してはまったくの初心者です。
ユーザーにさまざまな画像をロードし、RGB値を多次元配列で返すように要求するプログラムを作成しようとしています。両方の部分が別々に機能していますが、2 つを一緒に機能させるのに問題があります。
toolkit.getImage- を使用して、1 つのクラスに画像をロードします。
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
次に、画像を別のクラスに送信して、RGB 値を取得します。
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);
}
}
これにより、「java.lang.IllegalArgumentException」エラーが発生します。問題は、画像を読み取れないことだと思います。画像を BufferedImage に変換する必要があるのか、名前が間違っているのか、ファイルを間違って読み取ろうとしているのかはわかりません。これを機能させるためにさまざまな方法を試しましたが、うまくいきませんでした。どんな助けでも大歓迎です。
ありがとう。