Javaのutil.Listに精通している場合、ImageとBufferedImageの違いは、ListとLinkedListの違いと同じです。
Imageは一般的な概念であり、BufferedImageは一般的な概念の具体的な実装です。 BMWのようなものは車のメーカーです。
画像は抽象クラスです。画像を直接インスタンス化することはできません。 BufferedImageは子孫であり、それをインスタンス化できます。したがって、抽象クラスと継承を理解すれば、それぞれをいつ使用するかが理解できます。
たとえば、複数のImageの子孫を使用していた場合、それらはImageから継承されたいくつかの共通プロパティを共有します。
いずれかの種類の子孫をパラメーターとしてとる関数を作成したい場合は、次のようにします。
function myFunction(Image myImage) {
int i = myImage.getHeight();
...
}
次に、BufferedImageまたはVolatileImageを渡して関数を呼び出すことができます。
BufferedImage myBufferedImage;
VolatileImage myVolatileImage;
...
myFunction(myVolatileImage);
myFunction(myBufferedImage);
Imageが存在しないため、ImageをBufferedImageに変換しません。
Image
とBufferedImage
の違いは何ですか?
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"));