2010-10-15 6 views

Antwort

16

Wenn Sie mit der util.List von Java vertraut sind, ist der Unterschied zwischen Image und BufferedImage derselbe wie der Unterschied zwischen List und LinkedList.

Image ist ein generisches Konzept und BufferedImage ist die konkrete Implementierung des generischen Konzepts; So ähnlich wie BMW ist eine Marke von einem Auto.

13

Bild ist eine abstrakte Klasse. Sie können Image nicht direkt instanziieren. BufferedImage ist ein Nachkomme, und Sie können diesen instanziieren. Also, wenn Sie abstrakte Klassen und Vererbung verstehen, werden Sie verstehen, wann sie zu verwenden sind.

Wenn Sie beispielsweise mehrere Image-Nachkommen verwenden, werden sie einige gemeinsame Eigenschaften teilen, die von Image übernommen werden.

Wenn Sie wollten eine Funktion schreiben, die entweder Art von Nachkomme als Parameter würden Sie so etwas tun könnte:

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

Sie könnten dann die Funktion aufrufen, indem er eine BufferedImage oder eine VolatileImage vorbei.

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

Sie werden ein Bild nicht in ein BufferedImage konvertieren, da Sie nie ein Bild haben werden.

7

Was ist der Unterschied zwischen Image und BufferedImage?

Wie bei Bildern in dem Oracle Java tutorial angegeben

für Arbeits
  • java.awt.Image Die Klasse ist die Oberklasse, die graphischen Bilder als rechteckige Anordnungen von Pixeln dargestellt ist.
  • Die java.awt.image.BufferedImage-Klasse, die die Image-Klasse erweitert, damit die Anwendung direkt mit Bilddaten arbeiten kann (z. B. Abrufen oder Einrichten der Pixelfarbe). Anwendungen können Instanzen dieser Klasse direkt erstellen.

Die BufferedImage Klasse ist ein Eckpfeiler der Java 2D-Immediate-Mode-Bildgebung API. Es verwaltet das Bild im Speicher und bietet Methoden zum Speichern, Interpretieren und Erhalten von Pixeldaten. Da BufferedImage eine Unterklasse von Image ist, kann sie von den Graphics- und Graphics2D-Methoden gerendert werden, die einen Image-Parameter akzeptieren.

Ein BufferedImage ist im Wesentlichen ein Image mit einem zugreifbaren Datenpuffer. Es ist daher effizienter, direkt mit BufferedImage zu arbeiten. Ein BufferedImage hat ein ColorModel und einen Raster von Bilddaten. Das ColorModel bietet eine Farbinterpretation der Pixeldaten des Bildes.


Kann ich erstellen BufferedImage direkt von einer Bildquelle "image.png"?

Sicher.

BufferedImage img = ImageIO.read(getClass().getResource("/path/to/image")); 
Verwandte Themen