3

ここではかなりの初心者ですが、ここに私の問題を説明する小さなテストコードがあります。印刷される値は-1です。画像のピクセル幅を返す方法について少しも手がかりがありませんが、ここで非常に明白な何かが欠けていますか?このImageObserver全体は意味がありません!!!

    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;



    class imagetest2 extends JPanel {
        Image i =Toolkit.getDefaultToolkit().getImage(/*image*/);

        public int test(){
            int x = i.getWidth(null);
            return x;
        }


    }

    class imagetest {
        public static void main(String args[]){
            imagetest2 tesst = new imagetest2();
            System.out.print(tesst.test());
        }
    }
4

2 に答える 2

5

Toolkit.getDefaultToolkit().getImage()あなたが望むものではない画像を非同期的にロードする可能性があります。

パラメータがある場合とない場合の代わりにImageIOand を使用します (ただし、 を渡すと、他のパラメータも同様に機能します)。BufferedImagegetWidth()getHeight()ImageObservernull

BufferedImage image = ImageIO.read("/*image*/");
int width = image.getWidth();
于 2012-04-23T21:39:24.317 に答える
0

間違ったクラスを使用しているだけです。あなたが望むものを達成するためのより簡単な方法があります、これはそれを行います:

import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.File;
import javax.imageio.ImageIO;

class ImageTest 
{
    BufferedImage img;

    public static int getWidthFromImage(String filename)
    {
        BufferedImage image;
        int width;
        try
        {
            image = ImageIO.read(new File(filename));
            return image.getWidth();
        }
        catch(IOException e)
        {
            System.out.println("Something terrible happened! " + e.getMessage());
            e.printStackTrace();
        }
        return -1;
    }
    public static void main(String args[])
    {
        System.out.print("The width of the image in pixels is: " + getWidthFromImage(args[0]));
    }
}
于 2012-04-23T22:06:22.457 に答える