0

Javaには次のメソッドがあります。getWidth(ImageObserver observer)

画像の幅を返します。この方法は、ImageObserver が必要な部分にたどり着くまでは簡単に思えます。パラメータとしての ImageObserver の目的は何ですか。これを回避する他の方法はありますか?

ここで述べたように、ImageIcon だけを使用することはできないことに注意してください: Getting Height and Width of Image in Java without an ImageObserver 理由は、最終的に JFileChooser からイメージをロードするためです。これが、Height と Width に定数を使用できない理由でもあります。ユーザーがどの画像を使用したいかわかりません。

また、これら2つの理由からコードを投稿する必要はないと思います

A) 私のコードは、SSCCE のコードに近いものではありません: http://sscce.org/

B) これは非常に一般的な質問なので、私のコードは具体的すぎると思います。

4

1 に答える 1

3

JavaDocsから

画像の幅を決定します。幅がまだ不明な場合、このメソッドは -1 を返し、指定された ImageObserver オブジェクトに後で通知されます。

これは基本的に、Imageが完全に実現されていない場合 (通常はバックグラウンド スレッドで読み込まれるため)、ImageObserver値が判明したときに に通知されることを意味します。

より良い解決策は、ImageIOAPIを使用することですread。画像が完全に読み込まれる (そして実現される) までメソッドが返されないIOExceptionか、画像を読み込めない場合は a がスローされるためです。

詳細については、画像の読み取り/読み込みをご覧ください。

「本当に」それらを使用ImageToolkitてロードする必要がある場合は、 も確認する必要がありますMediaTrackerが、BufferedImage(によって返されるImageIO.read) extendsImageであるため、実際にはあまり必要ありません。

于 2015-08-07T03:05:26.490 に答える