WIA RAW-Datenheader
Der Header für RAW-Daten lautet wie folgt:
DWORD Tag; // must contain 'WRAW' (single byte ASCII characters)
DWORD Version; // must contain 0x00010000
DWORD HeaderSize; // contains amount of valid bytes in header
DWORD XRes; // X (horizontal) resolution, in DPI
DWORD YRes; // Y (vertical) resolution, in DPI
DWORD XExtent; // image width, in pixels
DWORD YExtent; // image height, in pixels
DWORD BytesPerLine; // used only for uncompressed image data, 0 (unknown) for compressed data
DWORD BitsPerPixel; // number of bits per pixel (all channels)
DWORD ChannelsPerPixel; // number of color channels (samples) within a pixel
DWORD DataType; // current WIA_IPA_DATATYPE value describing the image
BYTE BitsPerChannel[8]; // up to 8 channels per pixel, use as many as needed
DWORD Compression; // current WIA_IPA_COMPRESSION value
DWORD PhotometricInterp; // current WIA_IPS_PHOTOMETRIC_INTERP value
DWORD LineOrder; // image line order as a WIA_LINE_ORDER value
DWORD RawDataOffset; // offset position (in bytes, starting from 0) for the raw image data
DWORD RawDataSize; // size of raw image data, in bytes
DWORD PaletteOffset; // offset position (in bytes, starting from 0) for the palette (0 if none)
DWORD PaletteSize; // size, in bytes, of color palette table (0 if no palette is required)
Zusätzliche Kopfzeilenfeldbeschreibungen
DWORD-Komprimierung
Ermöglicht komprimierte rohe Formate, z. B. die komprimierte NEF von Nikon und headerlose komprimierte Daten, die für komprimierte Faxübertragungen verwendet werden (Gruppe 3.1, 3.2d, 4). Werte für dieses Feld wären WIA_IPA_COMPRESSION Konstanten, möglicherweise herstellerspezifisch für spezialisierte Anwendungen. Der Standardwert ist WIA_COMPRESSION_NONE.
Komprimierungsbeispiele:
G4-komprimierte Daten (WIA_COMPRESSION_G4) können entweder innerhalb einer TIFF-Datei (WiaImgFmt_TIFF) oder im rohen Format (WiaImgFmt_RAW) übertragen werden.
JPEG-komprimierte Daten (WIA_COMPRESSION_JPEG) können entweder im JFIF-Format (WiaImgFmt_JPEG), im EEXIF-Format (WiaImgFmt_EXIF) oder im TIFF-Format (WiaImgFmt_TIFF) übertragen werden. Es ist nicht möglich, JPEG-Daten, die in einem der Austauschformate (JFIF, EEXIF) formatiert sind, innerhalb von Übertragungen mit dem Rohformat (WiaImgFmt_RAW) zu übertragen. Stattdessen ist es erforderlich, eines der anderen JPEG-kompatiblen Formate zu verwenden.
Weitere Informationen zu den WIA-Komprimierungskonstanten finden Sie in der eigenschaft WIA_IPA_COMPRESSION .
DWORD PhotometricInterp
Beschreibt die photometrische Interpretation für das übertragene Bild. Dieses Feld ist für Bilder mit Schwarzweiß (1 Tbpp) und Graustufen (4 Bit/s oder mehr) erforderlich. Diese Bilder müssen die Werte für Weiß und Schwarz angeben, entweder WIA_PHOTO_WHITE_1 (wobei Weiß 1 ist, Schwarz ist 0) oder WIA_PHOTO_WHITE_0 (wobei Weiß 0 ist, Schwarz 1 ist). Dieses Feld ist optional für Farbbilder.
DWORD LineOrder
Beschreibt, ob die Zeilen/Zeilen in den Bilddaten von oben nach unten oder von unten nach oben sortiert sind. Hierfür wurden zwei neue Konstanten in wiadef.h definiert:
#define WIA_LINE_ORDER_TOP_TO_BOTTOM 0x00000001
#define WIA_LINE_ORDER_BOTTOM_TO_TOP 0x00000002
Dafür ist keine neue Eigenschaft definiert. Dies ist keine konfigurierbare Scaneinstellung. LingOrder ist nur bei der Ausführung von Bilddatenübertragungen von Bedeutung.
DWORD RawDataSize
Gibt die Größe der Rohdaten in Bytes an, die dem Header folgen (ohne die optionale Farbpalette). Anwendungen können dieses Feld verwenden, um den Abschluss einer angenommenen erfolgreichen Bildübertragung zu überprüfen. Wenn diese Informationen für den Minidriver zu dem Zeitpunkt unbekannt sind, zu dem die Übertragung beginnt (und der Header in den Stream geschrieben wird), z. B. wenn das Bild mithilfe der automatischen Rahmenerkennung gescannt wird, sollte der Minidriver dieses Feld am Ende der Bilddatenübertragung ausfüllen müssen, ähnlich wie die XExtent- und YExtent-Felder behandelt werden.
DWORD PaletteOffset
Enthält den Offset in Bytes, in dem die Farbpalette im Datenstrom beginnt. dieser Offset beginnt (an Position 0), wo der Header endet.. Die Paletten- und Rohbilddaten können dem rohen Header in beliebiger Reihenfolge folgen, und die Palette kann weggelassen werden, wenn sie nicht benötigt wird.
DWORD PaletteSize
Enthält die Größe der Farbpalette in Bytes. Wenn keine Palette an die Rohbilddaten angefügt werden muss, sollte minidriver dieses Feld auf 0 festlegen. Dieses Feld bezieht sich nicht auf die Anzahl der Einträge in der Palette.
Schwarz-Weiß- und Graustufendaten können die Palette weglassen (da die zum Erstellen der Palette erforderlichen Informationen im Feld PhotometricInterpretation enthalten sind) oder eine optimierte Palette zusammen mit dem Feld PhotometricInterpretation bereitstellen.
Bei indizierten Bildern wird die Anzahl der Einträge in der Farbpalette vom aktuellen BitsPerPixel-Wert (2 ^ BitsPerPixel) bestimmt. Beispiel: 2 Einträge für 1bpp, 16 einträge für 4bpp, 256 einträge für 8bpp). Das Format der Paletteneinträge wird von der Anzahl der Einträge im BitsPerChannel-Feld (die Anzahl der Felder/Kanäle in jedem Paletteneintrag) und bitsPerChannel-Werten (jedes Feld würde genau den Wert enthalten, der im Feld BitsPerChannel für den jeweiligen Kanal angegeben ist). Jedes Paletteneintragsfeld muss BYTE-ausgerichtet sein.