Directory Contents Search << >>


DaVinci 4: Datenquellen und Datensenken (Streams)

Kompression von Bilddaten

Die DaVinci-Bibliothek eignet sich dank der besonderen Eigenschaften der unterstützten Datenformate nicht nur als Konverter für Datenformate, sondern auch ganz hervorragend zur Kompression von Bilddaten.

Das Dateiformat JPEG eignet sich besonders zur Kompression von Echtfarbbilder wie Fotografien, das PNG-Datenformat bietet gute Kompressionsunterstützung für Skizzen und dank das TIFF Fax G3/G4-Format bietet eine besonders hohe Kompressionsrate für Schwarz/Weiß Grafiken. Mit dem JPEG-2000 Format können bei hohem Rechenaufwand sogar noch höhere Kompressionsraten erzielt werden wie mit JPEG.

Ablage der komprimierten Bilddaten

Bei normaler Handhabung entnimmt DaVinci die Bilddaten einer Datei und speichert komprimierte Bilddaten wieder als Datei ab. Für Anwendungen der Bildarchivierung unterstützt DaVinci aber auch eine streaming Technologie, mit deren Hilfe Sie die Daten ohne einen Umweg über eine Datei direkt in Ihrer Applikation bearbeiten können.

Das IStream Interface

DaVinci führt alle Datei Ein-/Ausgaben über Objekte mit IStream Interface durch. Das IStream-Interface wurde von Microsoft zunächst für den Einsatz mit OLE Storage-Containern definiert, wird aber mittlerweile auch in vielen anderen APIs eingesetzt.

Normalerweise öffnet und schließt DaVinci beim Aufruf von ipImportInd bzw. ipExportInd automatisch die Datei anhand des angegebenen Dateinamens und verwendet zum Dateizugriff intern ein Objekt mit IStream * Interface. Die Anwendung kann jedoch im Member stream der DAVPARAMS-Struktur ein Objekt mit IStream Interface angeben über das die Datei Ein/Ausgaben erfolgen sollen.

Das IStream Interface ist eine Interface-Definition, kein API. Das bedeutet, dass jede Anwendung Klassen implementieren kann, die dieses Interface implementieren. Am Einfachsten ist dies mit C++ möglich.

Standardimplementierungen

Folgende Standard-Implementierungen von Klassen mit IStream-Interface stehen zur Verfügung:

ipCreateStreamOnFile von DaVinci in davinci4.dll erzeugt für eine Datei mit angegebenem Dateinamen ein Objekt mit IStream-Interface. Diese Funktion hat dieselbe Semantik wie die Windows API-Funktion SHCreateStreamOnFile. SHCreateStreamOnFile erfordert aber nicht die Installation eines Microsoft Internet Explorer 6 oder neuer (Die mit Internet Explorer 5 mitgelieferte Implementierung ist fehlerhaft).

CreateStreamOnHGlobal vom WIN32 API erzeugt ein Objekt mit IStream Interface basierend auf einem Speicherbereich der mit der Funktion GlobalAlloc angefordert wurde.

ipCreateStreamOnHmmio von DaVinci in davinci4.dll erzeugt für ein bereits vorhandenes HMMIO-Handle vom MMSYSTEM-API mmioOpen ein Objekt mit IStream-Interface. Diese Funktion soll Anwendern die Portierung von Anwendungen die für DaVinci 3 entwickelt wurden, erleichtern.

Beispielprogramme

Das C++ Beispielprogramm examples\dxf2tiffcgi\ zeigt, wie sie eigene Klassen mit IStream-Interface implementieren können.

Betriebssysteme

Für Windows und Wincows CE ist IStream ein natives Interface, das von vielen API-Funktionen verwendet wird, teilweise auch unter dem Namen LPSTREAM. Für die Linux/Unix-Versionen von DaVinci wird eine eigene Implementierung mitgeliefert, die Sie durch #include <windows.h> ansprechen können. So kann das genannte Beispielprogramm dxf2tiffcgi z.B. ebenfalls für Linux compiliert werden.

-


Valid HTML 4.01!