24

ImageとBufferedImageの違いは何ですか?

画像ソース「image.png」から直接BufferedImageを作成できますか?

4

3 に答える 3

27

Javaのutil.Listに精通している場合、ImageとBufferedImageの違いは、ListとLinkedListの違いと同じです。

Imageは一般的な概念であり、BufferedImageは一般的な概念の具体的な実装です。BMWのようなものは車のメーカーです。

于 2010-10-15T19:05:36.507 に答える
15

画像は抽象クラスです。Imageを直接インスタンス化することはできません。BufferedImageは子孫であり、その子孫をインスタンス化できます。したがって、抽象クラスと継承を理解すれば、それぞれをいつ使用するかを理解できます。

たとえば、複数のImageの子孫を使用している場合、それらはImageから継承されるいくつかの共通のプロパティを共有します。

いずれかの種類の子孫をパラメーターとして受け取る関数を作成する場合は、次のようにすることができます。

function myFunction(Image myImage) {
  int i = myImage.getHeight();
  ...
}

次に、BufferedImageまたはVolatileImageを渡すことで関数を呼び出すことができます。

BufferedImage myBufferedImage;
VolatileImage myVolatileImage;
...
myFunction(myVolatileImage);
myFunction(myBufferedImage);

画像がないため、画像をBufferedImageに変換することはありません。

于 2010-10-15T18:06:19.677 に答える
14

Imageとの違いは何BufferedImageですか?

画像を操作するためのOracleJavaチュートリアルで述べたように

  • java.awt.Imageクラスは、グラフィック画像をピクセルの長方形配列として表すスーパークラスです。
  • java.awt.image.BufferedImageクラス。Imageクラスを拡張して、アプリケーションが画像データを直接操作できるようにします(たとえば、ピクセルカラーの取得や設定)。アプリケーションは、このクラスのインスタンスを直接構築できます。

BufferedImageクラスは、Java2D即時モードイメージングAPIの基礎です。メモリ内の画像を管理し、ピクセルデータを保存、解釈、および取得するためのメソッドを提供します。BufferedImageはImageのサブクラスであるため、Imageパラメーターを受け入れるGraphicsメソッドとGraphics2Dメソッドでレンダリングできます。

BufferedImageは、基本的に、アクセス可能なデータバッファーを備えた画像です。したがって、BufferedImageを直接操作する方が効率的です。BufferedImageには、カラーモデルと画像データのラスターがあります。ColorModelは、画像のピクセルデータの色の解釈を提供します。


BufferedImage画像ソース「image.png」から直接作成できますか?

もちろん。

BufferedImage img = ImageIO.read(getClass().getResource("/path/to/image"));
于 2014-01-06T12:47:42.970 に答える