web-dev-qa-db-ja.com

Javaの画像とBufferedImageの違い

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

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

22
Tofiq

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

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

24
Alvin

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

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

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

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

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

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

Imageが存在しないため、ImageをBufferedImageに変換しません。

15
Marcus Adams

ImageBufferedImageの違いは何ですか?

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

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

BufferedImageクラスは、Java 2D即時モードイメージングAPIの要です。これは、メモリ内のイメージを管理し、ピクセルデータの保存、解釈、および取得のためのメソッドを提供します。BufferedImageは、 Imageパラメータを受け入れるGraphicsおよびGraphics2Dメソッドによってレンダリングできます。

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


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

承知しました。

BufferedImage img = ImageIO.read(getClass().getResource("/path/to/image"));
11
Paul Samsotha