私はJavaAPIを読みましたが、それでも次の主な違いを理解していません。
1)ImageIcon 2)BufferedImage 3)VolatileImage 4)Image
それぞれがいつ使用されるか誰かに教えてもらえますか?
私はJavaAPIを読みましたが、それでも次の主な違いを理解していません。
1)ImageIcon 2)BufferedImage 3)VolatileImage 4)Image
それぞれがいつ使用されるか誰かに教えてもらえますか?
この説明を、Java Image 型を使用するための絶対的な標準とは呼びませんが、私が従う経験則は次のとおりです。
1.イメージアイコン
これは通常、ボタンに追加したり、ウィンドウのアイコンとして使用したい小さな画像がある場合に使用されます。これらは、インターフェイスを実装するものから直接作成できImage
ます。
2. BufferedImage
通常、画像内の個々のピクセルを操作する必要がある場合、またはカスタムpaint(Graphics g)
メソッドをダブル バッファリングする場合に使用されます。イメージは RAM に存在するため、多くのスペースを占有する可能性BufferedImage
があり、通常、インスタンスへの変更はハードウェア アクセラレーションされません。
3.VolatileImage
ハードウェア アクセラレーション イメージなので高速ですが、ペイントが完了する前にハードウェア バックアップのバッファーが上書きされるリスクがあります (ただし、これはめったに発生せず、Oracle によれば、これは Windows ベースのマシンのみの問題です)。BufferedImage
カスタム メソッドをダブル バッファリングする場合よりも使用するのが少し難しくなりますがpaint(Graphics g)
、画面にレンダリングする前に多くの前処理を行う場合は、使用する価値があります。
4. 画像
これは基本的に、すべてのユーザーが持つ必要のある最低限の機能を定義するインターフェイスにすぎImage
ません。画像の内容を変更する必要がない場合や、読み取り専用の画像データを処理するメソッドを最も柔軟にしたい場合に、これを使用する必要があります。
また、ImageIcon はシリアライズ可能を実装しているため、Java ソケット経由で送信できます。Image オブジェクトがある場合は、それらを ImageIcon に変換して送信する必要があります。クライアント側が ImageIcons を取得すると、それらを再度イメージに変換できます。