ImageとBufferedImageの違いは何ですか?
画像ソース「image.png」から直接BufferedImageを作成できますか?
Javaのutil.Listに精通している場合、ImageとBufferedImageの違いは、ListとLinkedListの違いと同じです。
Imageは一般的な概念であり、BufferedImageは一般的な概念の具体的な実装です。BMWのようなものは車のメーカーです。
画像は抽象クラスです。Imageを直接インスタンス化することはできません。BufferedImageは子孫であり、その子孫をインスタンス化できます。したがって、抽象クラスと継承を理解すれば、それぞれをいつ使用するかを理解できます。
たとえば、複数のImageの子孫を使用している場合、それらはImageから継承されるいくつかの共通のプロパティを共有します。
いずれかの種類の子孫をパラメーターとして受け取る関数を作成する場合は、次のようにすることができます。
function myFunction(Image myImage) {
int i = myImage.getHeight();
...
}
次に、BufferedImageまたはVolatileImageを渡すことで関数を呼び出すことができます。
BufferedImage myBufferedImage;
VolatileImage myVolatileImage;
...
myFunction(myVolatileImage);
myFunction(myBufferedImage);
画像がないため、画像をBufferedImageに変換することはありません。
Image
との違いは何BufferedImage
ですか?
画像を操作するためのOracleJavaチュートリアルで述べたように
BufferedImageクラスは、Java2D即時モードイメージングAPIの基礎です。メモリ内の画像を管理し、ピクセルデータを保存、解釈、および取得するためのメソッドを提供します。BufferedImageはImageのサブクラスであるため、Imageパラメーターを受け入れるGraphicsメソッドとGraphics2Dメソッドでレンダリングできます。
BufferedImageは、基本的に、アクセス可能なデータバッファーを備えた画像です。したがって、BufferedImageを直接操作する方が効率的です。BufferedImageには、カラーモデルと画像データのラスターがあります。ColorModelは、画像のピクセルデータの色の解釈を提供します。
BufferedImage
画像ソース「image.png」から直接作成できますか?
もちろん。
BufferedImage img = ImageIO.read(getClass().getResource("/path/to/image"));