9

バッファリングされた画像のスケーリングされたインスタンスを取得したかったので、次のようにしました:

public void analyzePosition(BufferedImage img, int x, int y){   
     img =  (BufferedImage) img.getScaledInstance(getWidth(), getHeight(), Image.SCALE_SMOOTH);
....
}

しかし、私は例外があります:

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: sun.awt.image.ToolkitImage cannot be cast to java.awt.image.BufferedImage
    at ImagePanel.analyzePosition(ImagePanel.java:43)

次に、キャストして、他の記事で読んだToolkitImage方法を使用したかったのです。getBufferedImage問題はsun.awt.image.ToolkitImage、Eclipse がこのクラスを認識しないため、キャストできないなどのクラスがないことです。と を使用Java 1.7jre1.7ます。

ここに画像の説明を入力

4

2 に答える 2

6

BufferedImage#getScaledInstanceは実際には から継承java.awt.Imageされており、それが を返すことを保証するだけなImageので、この場合、基になる戻り値の型を試してみることはお勧めできません。

getScaledInstanceまた、通常、最速または最高品質の方法ではありません

自体をスケーリングするBufferedImageには、さまざまなオプションがありますが、ほとんどの場合、元の画像を別の画像に再ペイントし、その過程で何らかのスケーリングを適用します。

例えば:

の詳細については、 The Perils of Image.getScaledInstance() をおgetScaledInstance読みください。

于 2013-10-22T00:40:21.230 に答える