6

BufferedImageJava で画像ファイルを読み取るには、やなど、さまざまな方法がありますImageIcon。これらのケースの違いは何ですか?それらは、特定のケースではそのうちの 1 つしか使用できないコンテキスト依存ですか?

ユーザーが選択した画像を読み取り、画像JFileChooserのカラー チャネルを分離する最良の方法は何でしょうか?

4

2 に答える 2

3

ImageIcon(およびToolkit#createImage/ Toolkit#getImage) バックグラウンド読み込みプロセスを使用します。つまり、これらのメソッドを呼び出した後、実際に画像データをロードするためのバックグラウンド スレッドを作成して、すぐに戻ります。

これらは、古い 28k モデムのように、低速の接続を介して大きな画像をロードするときに使用されていました/使用されています (ああ、私がどのように時代を覚えているか)。これは、イメージがダウンロードされている間もアプリケーションを実行し続けることができることを意味します。

メソッドがインターフェイスを受け入れ、このインターフェイスを実装するGraphicsクラスで見つけることができます。これにより、イメージの読み込みが実際に完了すると、コンポーネントが自動的に更新できるようになります。drawImageImageObserverjava.awt.Component

ImageIO一方、画像が完全に読み込まれるまで戻りません。また、新しいリーダー/ライターの導入が容易になり、API が元の API よりもはるかに柔軟になります。 ImageIOまた、すぐに使用できる幅広い画像をサポートしています。

BufferedImage特に画像に効果を適用する場合は、はるかに柔軟な画像クラスでもあります。

さて、私は個人的にはImageIO. 大きな画像や潜在的に低速な接続を介して画像を読み込んでいることがわかっている場合は、それらを読み込むための独自のバックグラウンド スレッドを作成します。もう少し複雑ですが、トレードオフは少量の余分な作業の重みを大幅に上回ります-IMHO

ユーザーが JFileChooser によって選択した画像を読み取り、画像のカラー チャネルを分離する最良の方法は何でしょうか?

ImageIO間違いなく。何かを使用してロードされた画像の深刻な操作を行うには、その画像をとにかくImageIconに変換する必要がありますBufferedImage

于 2013-01-03T11:07:22.533 に答える