seminararbeit zum thema bildverarbeitung mit java2d und java advanced imaging von winkler bernd
TRANSCRIPT
Seminararbeitzum Thema
Bildverarbeitung mit Java2D und Bildverarbeitung mit Java2D und Java Advanced ImagingJava Advanced Imaging
von Winkler Berndvon Winkler Bernd
Bildverarbeitung mit Java2D und Java Advanced ImagingBildverarbeitung mit Java2D und Java Advanced Imaging
Was ist Java2DWas ist Java2D
Was kann Java2DWas kann Java2D
Wie kann Java2D in einer Applikation einsetzt werdenWie kann Java2D in einer Applikation einsetzt werden
Was ist Java Advanced ImagingWas ist Java Advanced Imaging
Was kann Java Advanced ImagingWas kann Java Advanced Imaging
Wie kann JAI in einer Applikation einsetzten werdenWie kann JAI in einer Applikation einsetzten werden
Wo lohnt sich der Einsatz welches FrameworksWo lohnt sich der Einsatz welches Frameworks
Was leisten beide FrameworksWas leisten beide Frameworks
Bildverarbeitung mit Java2D und Java Advanced ImagingBildverarbeitung mit Java2D und Java Advanced Imaging
Inhalt des VortragsInhalt des Vortrags
Bildverarbeitung mit Java2D und Java Advanced ImagingBildverarbeitung mit Java2D und Java Advanced ImagingBildverarbeitung mit Java2D und Java Advanced ImagingBildverarbeitung mit Java2D und Java Advanced Imaging
Java2DJava2D
Framework für geräte- und auflösungsun-abhängige Grafik und Framework für geräte- und auflösungsun-abhängige Grafik und BilddarstellungBilddarstellung
Java2D API Java2D API
•zusätzlich zum Anlegen, Verwalten und Manipulieren von zusätzlich zum Anlegen, Verwalten und Manipulieren von Bildern und GrafikenBildern und Grafiken
•Ist im JDK API seit der Version 1.2 enthalten. Ist im JDK API seit der Version 1.2 enthalten.
•erweitert die Grafik- und Bildklassen von erweitert die Grafik- und Bildklassen von java.awtjava.awt und und werden vom Abstract Windowing Toolkit (AWT) integriertwerden vom Abstract Windowing Toolkit (AWT) integriert
Was ist Java2DWas ist Java2D
Bildverarbeitung mit Java2D und Java Advanced ImagingBildverarbeitung mit Java2D und Java Advanced ImagingBildverarbeitung mit Java2D und Java Advanced ImagingBildverarbeitung mit Java2D und Java Advanced Imaging
Was ist Java2DWas ist Java2D
Bildverarbeitung mit Java2D und Java Advanced ImagingBildverarbeitung mit Java2D und Java Advanced Imaging
Was kann Java2DWas kann Java2D
Die Java2D API bietet:Die Java2D API bietet:
Ein einheitliches Rendermodel für anzeigende und druckende GeräteEin einheitliches Rendermodel für anzeigende und druckende Geräte
Eine große Anzahl von geometrischen Primitiven, wie Kurven, Rechtecke undEine große Anzahl von geometrischen Primitiven, wie Kurven, Rechtecke und Ellipsen, und einen Mechanismus um eine Primitive virtuell zu rendernEllipsen, und einen Mechanismus um eine Primitive virtuell zu rendern
Mechanismen für die Erkennung von Überlappungen von geometrischenMechanismen für die Erkennung von Überlappungen von geometrischen Primitiven, Texten und BildernPrimitiven, Texten und Bildern
Hoch entwickelte, vielseitige Farbunterstützung für erleichtertes FarbmanagementHoch entwickelte, vielseitige Farbunterstützung für erleichtertes Farbmanagement
Unterstützung für das Drucken von komplexen DokumentenUnterstützung für das Drucken von komplexen Dokumenten
Bildverarbeitung mit Java2D und Java Advanced ImagingBildverarbeitung mit Java2D und Java Advanced ImagingBildverarbeitung mit Java2D und Java Advanced ImagingBildverarbeitung mit Java2D und Java Advanced Imaging
Was kann Java2DWas kann Java2D
Mit einem Objekt der Klasse Graphics2D des Java2D API‘s lassen sich:Mit einem Objekt der Klasse Graphics2D des Java2D API‘s lassen sich:
Linien jeder Dicke zeichnenLinien jeder Dicke zeichnen
Flächen füllen mit Texturen, Gradienten oder PatternsFlächen füllen mit Texturen, Gradienten oder Patterns
Texte und Grafiken zu drehen, skalieren, scheren und verschiebenTexte und Grafiken zu drehen, skalieren, scheren und verschieben
Aufeinandergezeichnete Texte und Grafiken mischenAufeinandergezeichnete Texte und Grafiken mischen
Die Java2D API erlaubt es auch einfach ein Bild im Speicher zu halten und auf Die Java2D API erlaubt es auch einfach ein Bild im Speicher zu halten und auf die Pixeldaten auch manipulierend zuzugreifen, um dieses wie im Beispiel zudie Pixeldaten auch manipulierend zuzugreifen, um dieses wie im Beispiel zusehen zu glätten und zu schärfen.sehen zu glätten und zu schärfen.
Original geglättet geschärftOriginal geglättet geschärft
Bildverarbeitung mit Java2D und Java Advanced ImagingBildverarbeitung mit Java2D und Java Advanced ImagingBildverarbeitung mit Java2D und Java Advanced ImagingBildverarbeitung mit Java2D und Java Advanced Imaging
Wie kann man Java2D in einer Applikation einsetztenWie kann man Java2D in einer Applikation einsetzten
Wie bekomme ich ein Objekt von Wie bekomme ich ein Objekt von java.awt.Graphics2Djava.awt.Graphics2D??
public classpublic class MyComponent MyComponent extendsextends Component Component {{......publicpublic voidvoid paint(Graphics g){ paint(Graphics g){
supersuper.paint(g);.paint(g);Graphics2D g2d = (Graphics) g;Graphics2D g2d = (Graphics) g;......
}}}}
Graphics2D g2d = (Graphics2D) myImage.getGraphics();Graphics2D g2d = (Graphics2D) myImage.getGraphics();
Bildverarbeitung mit Java2D und Java Advanced ImagingBildverarbeitung mit Java2D und Java Advanced ImagingBildverarbeitung mit Java2D und Java Advanced ImagingBildverarbeitung mit Java2D und Java Advanced Imaging
Wie kann Java2D in einer Applikation einsetzten werdenWie kann Java2D in einer Applikation einsetzten werdenWie nutze ich die geräte- und auflösungsunabhängig Grafik- und Bilddarstellung?Wie nutze ich die geräte- und auflösungsunabhängig Grafik- und Bilddarstellung?
GraphicsEnvironment ge = GraphicsEnvironment ge = //Grafische Umgebungsvariablen//Grafische Umgebungsvariablen
GraphicsEnvironment.getLocalGraphicsEnvironment();GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice[] gds = ge.getScreenDevices();GraphicsDevice[] gds = ge.getScreenDevices();//gds = Alle anzeigenden Geräte//gds = Alle anzeigenden Geräte
GraphicsConfiguration[] gcs = gds[x].getConfigurations();GraphicsConfiguration[] gcs = gds[x].getConfigurations();GraphicsConfiguration gc = gcs[y];GraphicsConfiguration gc = gcs[y];//gc = Grafische Konfiguration Y eines Gerätes X//gc = Grafische Konfiguration Y eines Gerätes X
AffineTransform aft = AffineTransform aft = newnew AffineTransform( AffineTransform( gc.getDefaultTransform()); gc.getDefaultTransform()); //Geräteigene Transformation//Geräteigene Transformation
aft.concatenate(gc.getNormalizingTransform());aft.concatenate(gc.getNormalizingTransform());/* aft = Umrechnung von 72 Einheiten im Userspace zu 1 Inch/* aft = Umrechnung von 72 Einheiten im Userspace zu 1 Inch im DeviceSpace */im DeviceSpace */
g2d.setTransform(aft);g2d.setTransform(aft);
Bildverarbeitung mit Java2D und Java Advanced ImagingBildverarbeitung mit Java2D und Java Advanced ImagingBildverarbeitung mit Java2D und Java Advanced ImagingBildverarbeitung mit Java2D und Java Advanced Imaging
Welche Bildklassen gibt es?Welche Bildklassen gibt es?
java.awt.Imagejava.awt.Image
java.awt.image.VolatileImagejava.awt.image.VolatileImage
java.awt.image.RenderedImagejava.awt.image.RenderedImage
java.awt.image.WritableRenderedImagejava.awt.image.WritableRenderedImage
java.awt.image.BufferedImagejava.awt.image.BufferedImage
Welche Operatoren gibt es für Bilder?Welche Operatoren gibt es für Bilder?
java.awt.image.AffineTransformOpjava.awt.image.AffineTransformOp
java.awt.image.ColorConvertOp java.awt.image.ColorConvertOp
java.awt.image.ConvolveOp java.awt.image.ConvolveOp
java.awt.image.LookupOpjava.awt.image.LookupOp
java.awt.image.RescaleOpjava.awt.image.RescaleOp
Wie kann Java2D in einer Applikation einsetzten werdenWie kann Java2D in einer Applikation einsetzten werden
Bildverarbeitung mit Java2D und Java Advanced ImagingBildverarbeitung mit Java2D und Java Advanced ImagingBildverarbeitung mit Java2D und Java Advanced ImagingBildverarbeitung mit Java2D und Java Advanced Imaging
Wie kann Java2D in einer Applikation einsetzten werdenWie kann Java2D in einer Applikation einsetzten werden
Wie erhält man ein Objekt der Bildklassen?Wie erhält man ein Objekt der Bildklassen?
Image img = java.awt.Toolkit.createImage(path);Image img = java.awt.Toolkit.createImage(path);
Image img = Image img = newnew javax.swing.ImageIcon().getImage(path); javax.swing.ImageIcon().getImage(path);
Applet applet = Applet applet = newnew Applet(); Applet();
Image image =Image image =
applet.getImage(applet.getDocumentBase(),path);applet.getImage(applet.getDocumentBase(),path);
BufferedImage bi = BufferedImage bi = newnew BufferedImage(width,height,BufferedImage.TYPE_INT_ARGB);BufferedImage(width,height,BufferedImage.TYPE_INT_ARGB);
Bildverarbeitung mit Java2D und Java Advanced ImagingBildverarbeitung mit Java2D und Java Advanced ImagingBildverarbeitung mit Java2D und Java Advanced ImagingBildverarbeitung mit Java2D und Java Advanced Imaging
Die Klassen, die in dem Java2D API Die Klassen, die in dem Java2D API diese Operatoren beschreiben erben alle diese Operatoren beschreiben erben alle von der abstrakten Klasse: von der abstrakten Klasse: java.awt.image.BufferedImageOpjava.awt.image.BufferedImageOp
Die Klasse Die Klasse java.awt.Graphics2Djava.awt.Graphics2D stellt eine Schnittstelle zur Verfügung, stellt eine Schnittstelle zur Verfügung, um einen solchen um einen solchen BufferedImageOpBufferedImageOp auf ein auf ein BufferedImageBufferedImage anzuwenden. anzuwenden.
Java2D‘s Konzeptes des virtuellen Java2D‘s Konzeptes des virtuellen Renderns wird beispielsweise durch die Renderns wird beispielsweise durch die Methode Methode filter()filter() der Klasse der Klasse BufferedImageOpBufferedImageOp repräsentiert. repräsentiert.
Im nebenstehenden Bild sind die Im nebenstehenden Bild sind die Ergebnisse von einigen Operatoren, die Ergebnisse von einigen Operatoren, die im Graphikkontext auf ein Bild im Graphikkontext auf ein Bild angewendet wurden, zu sehen.angewendet wurden, zu sehen.
Wie kann Java2D in einer Applikation einsetzten werdenWie kann Java2D in einer Applikation einsetzten werden
Bildverarbeitung mit Java2D und Java Advanced ImagingBildverarbeitung mit Java2D und Java Advanced Imaging
Wie kann Java2D in einer Applikation einsetzten werdenWie kann Java2D in einer Applikation einsetzten werden
Das Model, nachdem sich eine Applikation richtet, wenn sie ihre Operation auf Das Model, nachdem sich eine Applikation richtet, wenn sie ihre Operation auf einem Bildobjekte mittels einem Bildobjekte mittels BufferedImageOp.filter(…)BufferedImageOp.filter(…) ausführt nennt sich: ausführt nennt sich:
Immediate ModeImmediate Mode
Kennzeichnendes Prinzip des „Immediate Modes“ ist, dass jede Kennzeichnendes Prinzip des „Immediate Modes“ ist, dass jede Zeichenoperation im dem Moment ihres Aufrufes ausgeführt wird.Zeichenoperation im dem Moment ihres Aufrufes ausgeführt wird.
Die Java2D API bietet dem Entwickler eine weiter Möglichkeit seine Applikation Die Java2D API bietet dem Entwickler eine weiter Möglichkeit seine Applikation zu gestallten. Dieses richtet sich nach einem Produzenten – Konsumenten zu gestallten. Dieses richtet sich nach einem Produzenten – Konsumenten Prinzip, dass sogenannte:Prinzip, dass sogenannte:
Push ModelPush Model
Applikationen dieses Models arbeiten mit einem Applikationen dieses Models arbeiten mit einem ImageProducerImageProducer, der einen , der einen ImageConsumerImageConsumer über den Ladefortschritt benachrichtigt und ihm das Ergebnis über den Ladefortschritt benachrichtigt und ihm das Ergebnis einer Operation als Ansammlung von Pixel übergibt.einer Operation als Ansammlung von Pixel übergibt.
Bildverarbeitung mit Java2D und Java Advanced ImagingBildverarbeitung mit Java2D und Java Advanced Imaging
Wie kann Java2D in einer Applikation einsetzten werdenWie kann Java2D in einer Applikation einsetzten werden
ImageProducerImageProducer+addConsumer( ImageConsumer ic)+addConsumer( ImageConsumer ic)+isConsumer( ImageConsumer ic)+isConsumer( ImageConsumer ic)+removeConsumer( ImageConsumer ic)+removeConsumer( ImageConsumer ic)+startProduction( ImageConsumer ic)+startProduction( ImageConsumer ic)+requestTopDownLeftRightResend( ImageConsumer ic)+requestTopDownLeftRightResend( ImageConsumer ic)
ImageConsumerImageConsumer+imageComplete(int status)+imageComplete(int status)+setColorModel(ColorModel model)+setColorModel(ColorModel model)+setDimensions(int width, int height)+setDimensions(int width, int height)+setHints(int hintflags)+setHints(int hintflags)
+setPixels(int x, int y, int w, int h, ColorModel model, +setPixels(int x, int y, int w, int h, ColorModel model, byte[] pixels, int off, int scansize)byte[] pixels, int off, int scansize)
+setPixels(int x, int y, int w, int h, ColorModel model, +setPixels(int x, int y, int w, int h, ColorModel model, int[] pixels, int off, int scansize)int[] pixels, int off, int scansize)
+setProperties(Hashtable props)+setProperties(Hashtable props)
Bildverarbeitung mit Java2D und Java Advanced ImagingBildverarbeitung mit Java2D und Java Advanced ImagingBildverarbeitung mit Java2D und Java Advanced ImagingBildverarbeitung mit Java2D und Java Advanced Imaging
ImageProducerImageProducer
FilteredImageSourceFilteredImageSource
ImageConsumerImageConsumer
FilteredImageSourceFilteredImageSource
FilteredImageSourceFilteredImageSource
ApplikationApplikation
Durch Objekte der Klasse Durch Objekte der Klasse FilteredImageSourceFilteredImageSource, die von , die von ImageProducerImageProducer erbt lassen sich Pipelines aus erbt lassen sich Pipelines aus ImageProducernImageProducern bilden: bilden:
Wie kann Java2D in einer Applikation einsetzten werdenWie kann Java2D in einer Applikation einsetzten werden
Bildverarbeitung mit Java2D und Java Advanced ImagingBildverarbeitung mit Java2D und Java Advanced ImagingBildverarbeitung mit Java2D und Java Advanced ImagingBildverarbeitung mit Java2D und Java Advanced Imaging
Was ist Java Advanced ImagingWas ist Java Advanced Imaging
Java Advanced Imaging erweitert die Java Plattform um die Möglichkeit, hoch Java Advanced Imaging erweitert die Java Plattform um die Möglichkeit, hoch entwickelte, performancekritische Bildverarbeitung in Applets und Applikationen entwickelte, performancekritische Bildverarbeitung in Applets und Applikationen anzubieten.anzubieten.
Die Java Advanced Imaging API ist ein schnelles, plattformunabhängiges, leicht Die Java Advanced Imaging API ist ein schnelles, plattformunabhängiges, leicht erweiterbares Bildverarbeitungsframework, das auf den von Java2D erweiterbares Bildverarbeitungsframework, das auf den von Java2D geschaffenen Schnittstellen aufsetzt und dadurch zur Java Plattform kompatibel geschaffenen Schnittstellen aufsetzt und dadurch zur Java Plattform kompatibel bleibt.bleibt.
Die Java Advanced Imaging API stellt eine Reihe von Objektorientierten Die Java Advanced Imaging API stellt eine Reihe von Objektorientierten Schnittstellen zur Verfügung, die sich nach einem einfach zu programmierbaren Schnittstellen zur Verfügung, die sich nach einem einfach zu programmierbaren Model richten, das es dem Entwickler gestattet, leicht Bilder zu manipulieren.Model richten, das es dem Entwickler gestattet, leicht Bilder zu manipulieren.
Bildverarbeitung mit Java2D und Java Advanced ImagingBildverarbeitung mit Java2D und Java Advanced Imaging
Was kann Java Advanced ImagingWas kann Java Advanced Imaging
Welche Funktionalität bietet das Java Advanced Imaging API?Welche Funktionalität bietet das Java Advanced Imaging API?
• Mehr als 100 Operanden sind in JAI, die meisten nativ, implementiertMehr als 100 Operanden sind in JAI, die meisten nativ, implementiert
• JAI erlaubt folgende Bildformate und Datentypen: JAI erlaubt folgende Bildformate und Datentypen: Byte, UShort, Short, 32-bit Integer, Float/Double in n-bandigen BildernByte, UShort, Short, 32-bit Integer, Float/Double in n-bandigen Bildern
• JAI liest aus BMP-, GIF-, FPX-, JPEG-, PNG-, PNM-, TIFF-Dateien BildernJAI liest aus BMP-, GIF-, FPX-, JPEG-, PNG-, PNM-, TIFF-Dateien Bildern
• Ausserdem unterstützt JAI RMI (Ausserdem unterstützt JAI RMI (Remote Method Innovation) und IIP (InternetRemote Method Innovation) und IIP (Internet Imaging Protocol). Bilder können über Imaging Protocol). Bilder können über InputStreamInputStream oder oder URLURL geladen werden geladen werden
• JAI bietet Möglichkeiten, Java2D API Grafikdaten in JAI Bilder einzufügen.JAI bietet Möglichkeiten, Java2D API Grafikdaten in JAI Bilder einzufügen.
Bildverarbeitung mit Java2D und Java Advanced ImagingBildverarbeitung mit Java2D und Java Advanced ImagingBildverarbeitung mit Java2D und Java Advanced ImagingBildverarbeitung mit Java2D und Java Advanced Imaging
Was kann Java Advanced ImagingWas kann Java Advanced Imaging
Eine Übersicht der Kategorien von Operatoren:Eine Übersicht der Kategorien von Operatoren:
Punkt OperatorenPunkt Operatoren
Flächen OperatorenFlächen Operatoren
Geometrische OperatorenGeometrische Operatoren
Farbquantisierungs OperatorenFarbquantisierungs Operatoren
Datei OperatorenDatei Operatoren
Frequenz OperatorenFrequenz Operatoren
Statistische OperatorenStatistische Operatoren
Kanten Detektions OperatorenKanten Detektions Operatoren
Sonstige OperatorenSonstige Operatoren
Bildverarbeitung mit Java2D und Java Advanced ImagingBildverarbeitung mit Java2D und Java Advanced Imaging
Was kann Java Advanced ImagingWas kann Java Advanced Imaging
Da Java Advanced Imaging auf Java2D aufsetzt, übernimmt es dessen Da Java Advanced Imaging auf Java2D aufsetzt, übernimmt es dessen
Immediate ModeImmediate Mode sowie auch dessen sowie auch dessen Push ModelPush Model und stellt und stellt unterstützende Schnittstellen zur Verfügung.unterstützende Schnittstellen zur Verfügung.
Seine Performance erhält JAI hauptsächlich, wenn man Klassen aus dem JAI Seine Performance erhält JAI hauptsächlich, wenn man Klassen aus dem JAI API benutzt, die sich nach dem JAI eigenen Model richten:API benutzt, die sich nach dem JAI eigenen Model richten:
Pull ModelPull Model
Kennzeichnend für die Bildverarbeitung dieses Modells ist, dass Berechnungen Kennzeichnend für die Bildverarbeitung dieses Modells ist, dass Berechnungen nur dann durchgeführt werden, wenn sie vom Client angefordert werden, also nur dann durchgeführt werden, wenn sie vom Client angefordert werden, also gerade auch benötigt werden.gerade auch benötigt werden.
Das Pull Model teilt sich in JAI in zwei Kategorien: Rendereable und Rendered. Das Pull Model teilt sich in JAI in zwei Kategorien: Rendereable und Rendered. Als Renderable ist zu verstehen, was noch in Bildkoordinaten verwaltet wird, als Als Renderable ist zu verstehen, was noch in Bildkoordinaten verwaltet wird, als Rendered, was sich bereits im User-Space befindet. Beim Zeichnen benutzen Rendered, was sich bereits im User-Space befindet. Beim Zeichnen benutzen die Klassen von Rendereable die von Rendered um das Ergebnis zu die Klassen von Rendereable die von Rendered um das Ergebnis zu produzieren. Diese benutzen wiederum Klassen, die aus JAI‘s Immediate Mode produzieren. Diese benutzen wiederum Klassen, die aus JAI‘s Immediate Mode stammen, wie in der Abbildung der nächsten Seite zu sehen.stammen, wie in der Abbildung der nächsten Seite zu sehen.
Bildverarbeitung mit Java2D und Java Advanced ImagingBildverarbeitung mit Java2D und Java Advanced ImagingBildverarbeitung mit Java2D und Java Advanced ImagingBildverarbeitung mit Java2D und Java Advanced Imaging
Wie kann man JAI in einer Applikation einsetztenWie kann man JAI in einer Applikation einsetzten
Die Abbildung zeigt das Prinzip, nachdem das Zeichnen einer Renderable Die Abbildung zeigt das Prinzip, nachdem das Zeichnen einer Renderable Bildquelle, mit den dabei beteiligten Klassen, geschieht.Bildquelle, mit den dabei beteiligten Klassen, geschieht.
Bildverarbeitung mit Java2D und Java Advanced ImagingBildverarbeitung mit Java2D und Java Advanced Imaging
OpImageOpImage
OperationsbeschreibungOperationsbeschreibung
Bildverarbeitung mit Java2D und Java Advanced ImagingBildverarbeitung mit Java2D und Java Advanced Imaging
Wie kann man JAI in einer Applikation einsetztenWie kann man JAI in einer Applikation einsetzten
RenderableOpRenderableOp
OperationsparameterOperationsparameter
RenderableOpRenderableOp
OperationsparameterOperationsparameter
RenderableOpRenderableOp
OperationsparameterOperationsparameter
BildquelleBildquelle
Graphics2DGraphics2D
RenderedOpRenderedOp
OperationsparameterOperationsparameter
RenderedOpRenderedOp
OperationsparameterOperationsparameter
RenderedOpRenderedOp
OperationsparameterOperationsparameter
OpImageOpImage
OperationsbeschreibungOperationsbeschreibung
Bildverarbeitung mit Java2D und Java Advanced ImagingBildverarbeitung mit Java2D und Java Advanced Imaging
Wie kann man JAI in einer Applikation einsetztenWie kann man JAI in einer Applikation einsetzten
Durch das Anfügen von Rendered oder Renderable Operatoren zum Durch das Anfügen von Rendered oder Renderable Operatoren zum erzeugen von neuen Operatoren lassen sich Renderbäume bzw. –graphen erzeugen von neuen Operatoren lassen sich Renderbäume bzw. –graphen aufbauen. Werden beispielsweise zwei einfarbige Bilder erzeugt (Bilder aus aufbauen. Werden beispielsweise zwei einfarbige Bilder erzeugt (Bilder aus Konstanten), die dann über einen Additions-Operator verknüpft in einer Konstanten), die dann über einen Additions-Operator verknüpft in einer anzeigenden Komponente sichtbar sind, ergibt sich der folgende Graph anzeigenden Komponente sichtbar sind, ergibt sich der folgende Graph daraus:daraus:
Bildverarbeitung mit Java2D und Java Advanced ImagingBildverarbeitung mit Java2D und Java Advanced Imaging
Ein weiterer Grund für die höhere Performance von Java Advanced Imaging Ein weiterer Grund für die höhere Performance von Java Advanced Imaging ist die Möglichkeit, die durch RenderedImage definiert wurde, in einem Bild ein ist die Möglichkeit, die durch RenderedImage definiert wurde, in einem Bild ein Tile – Raster anzulegen und über Produktionsereignisse informiert zu werden. Tile – Raster anzulegen und über Produktionsereignisse informiert zu werden. JAI übernimmt die Aufgabe nur diejenigen Tiles zu berechnen, die gerade JAI übernimmt die Aufgabe nur diejenigen Tiles zu berechnen, die gerade benötigt werden.benötigt werden.
Wie kann man JAI in einer Applikation einsetztenWie kann man JAI in einer Applikation einsetzten
Bildverarbeitung mit Java2D und Java Advanced ImagingBildverarbeitung mit Java2D und Java Advanced Imaging
Wie kann man JAI in einer Applikation einsetztenWie kann man JAI in einer Applikation einsetzten
Wie lade ich ein Bild?Wie lade ich ein Bild?
RenderedImage ri = JAI.create("fileload",pfad);RenderedImage ri = JAI.create("fileload",pfad);
Wie erhalte ich einen Renderable Operator?Wie erhalte ich einen Renderable Operator?
RenderableOp raOp = RenderableOp raOp = JAI.createRenderable(“renderable”,ri);JAI.createRenderable(“renderable”,ri);
Wie erzeuge ich eine Operation?Wie erzeuge ich eine Operation?
ParameterBlock pb = ParameterBlock pb = newnew ParameterBlock(); ParameterBlock();pb.addSource(ri); pb.addSource(ri); // oder raOp; Für Renderable// oder raOp; Für Renderablepb.add(pb.add(0.0f0.0f); ); // X-Koordinate des Drehpunktes// X-Koordinate des Drehpunktespb.add(pb.add(0.0f0.0f); ); // Y-Koordinate des Drehpunktes// Y-Koordinate des Drehpunktespb.add( (pb.add( (floatfloat) Math.toRadians( ) Math.toRadians( 9090 ) ); ) ); // Drehwinkel// Drehwinkel
RenderedOp ro = JAI.create(„rotate“,pb);RenderedOp ro = JAI.create(„rotate“,pb);
RenderableOp raOp2 = JAI.createRenderable(„rotate“,pb);RenderableOp raOp2 = JAI.createRenderable(„rotate“,pb);
Bildverarbeitung mit Java2D und Java Advanced ImagingBildverarbeitung mit Java2D und Java Advanced Imaging
Wo lohnt sich der Einsatz welches FrameworksWo lohnt sich der Einsatz welches Frameworks
Java2D unterstützt hauptsächlich graphische Operationen und low-level Java2D unterstützt hauptsächlich graphische Operationen und low-level Bildverarbeitung. Für die meisten Applikationen ist Java2D schnell genug.Bildverarbeitung. Für die meisten Applikationen ist Java2D schnell genug.
Vorteile: Vorteile:
Braucht keine Zusatzpakete beim EndnutzerBraucht keine Zusatzpakete beim Endnutzer
Leicht in eine GUI zu integrierenLeicht in eine GUI zu integrieren
Native Code Implementierungen sind meist einfacher Native Code Implementierungen sind meist einfacher in Java2D zu entwickelnin Java2D zu entwickeln
Nachteile:Nachteile:
Bietet nur sehr wenige Operationen für Bilder anBietet nur sehr wenige Operationen für Bilder an
Entwickler muss sich selbst um ein schnelles Applikationsmodell kümmernEntwickler muss sich selbst um ein schnelles Applikationsmodell kümmern
Bildverarbeitung mit Java2D und Java Advanced ImagingBildverarbeitung mit Java2D und Java Advanced Imaging
Wo lohnt sich der Einsatz welches FrameworksWo lohnt sich der Einsatz welches Frameworks
Java Advanced Imaging bietet gute Bildverarbeitungsmöglichkeiten, die für Java Advanced Imaging bietet gute Bildverarbeitungsmöglichkeiten, die für komplexere Operationen genauso gut geeignet sind wie für einfachere. Zur komplexere Operationen genauso gut geeignet sind wie für einfachere. Zur reinen Grafikerstellung ist es nicht zu empfehlen.reinen Grafikerstellung ist es nicht zu empfehlen.
Vorteile:Vorteile:
Einfaches durchführen komplexer Operationen auf BildernEinfaches durchführen komplexer Operationen auf Bildern
Kompatibel zur Java PlattformKompatibel zur Java Plattform
Hohe PerformanceHohe Performance
Direkte Netzanbindung vorhandenDirekte Netzanbindung vorhanden
Einfach zu erweiternEinfach zu erweitern
Nachteile:Nachteile:
Zusatzpakete müssen beim Benutzer vorhanden seinZusatzpakete müssen beim Benutzer vorhanden sein
Implementierung komplexer als bei Java2DImplementierung komplexer als bei Java2D
Bildverarbeitung mit Java2D und Java Advanced ImagingBildverarbeitung mit Java2D und Java Advanced Imaging
Was leisten beide FrameworksWas leisten beide Frameworks
Vorführung der Demoprogramme zu Java2D und Java Vorführung der Demoprogramme zu Java2D und Java Advanced ImagingAdvanced Imaging
Abschließende FragenAbschließende Fragen