En-tête de données RAW WIA
L’en-tête des données RAW est le suivant :
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)
Descriptions des champs d’en-tête supplémentaires
Compression DWORD
Autorise les formats bruts compressés, tels que le NEF compressé de Nikon et les données compressées sans en-tête utilisées pour les transmissions de télécopie compressées (Groupe 3.1, 3.2d, 4). Les valeurs de ce champ seraient WIA_IPA_COMPRESSION constantes, éventuellement spécifiques au fournisseur pour les applications spécialisées. La valeur par défaut est WIA_COMPRESSION_NONE.
Exemples de compression :
Les données compressées G4 (WIA_COMPRESSION_G4) peuvent être transférées dans un fichier TIFF (WiaImgFmt_TIFF) ou à l’aide du format brut (WiaImgFmt_RAW).
Les données compressées JPEG (WIA_COMPRESSION_JPEG) peuvent être transférées au format JFIF (WiaImgFmt_JPEG), au format EEXIF (WiaImgFmt_EXIF) ou au format TIFF (WiaImgFmt_TIFF). Il n’est pas possible de transférer des données JPEG mises en forme dans l’un des formats d’échange (JFIF, EEXIF) dans les transferts à l’aide du format brut (WiaImgFmt_RAW). À la place, il est nécessaire d’utiliser l’un des autres formats compatibles JPEG.
Pour plus d’informations sur les constantes de compression WIA, consultez la propriété WIA_IPA_COMPRESSION .
DWORD PhotometricInterp
Décrit l’interprétation photométrique de l’image transférée. Ce champ est requis pour les images en noir et blanc (1bpp) et en nuances de gris (4 bpp ou plus). Ces images doivent indiquer les valeurs du blanc et du noir, soit WIA_PHOTO_WHITE_1 (où blanc est 1, noir est 0) ou WIA_PHOTO_WHITE_0 (où blanc est 0, noir est 1). Ce champ est facultatif pour les images en couleur.
DWORD LineOrder
Indique si les lignes/lignes dans les données d’image sont classées de haut en bas ou de bas en haut. Deux nouvelles constantes ont été définies dans wiadef.h pour ceci :
#define WIA_LINE_ORDER_TOP_TO_BOTTOM 0x00000001
#define WIA_LINE_ORDER_BOTTOM_TO_TOP 0x00000002
Aucune nouvelle propriété n’est définie pour cela. Il ne s’agit pas d’un paramètre d’analyse configurable. LingOrder n’est important que lors de l’exécution de transferts de données d’image.
DWORD RawDataSize
Indique la taille, en octets, des données brutes qui suivent l’en-tête (sans inclure la palette de couleurs facultative). Les applications peuvent utiliser ce champ pour vérifier l’achèvement d’un transfert d’image présumé réussi. Lorsque ces informations sont inconnues du minidriver au moment où le transfert commence (et que l’en-tête est écrit dans le flux), par exemple lorsque l’image est analysée à l’aide de la détection automatique des bordures, le minidriver doit être tenu de remplir ce champ à la fin du transfert de données d’image, de la même façon que les champs XExtent et YExtent sont gérés.
Palette DWORDOffset
Contient le décalage, en octets, où la palette de couleurs commence dans le flux de données ; ce décalage commence (à la position zéro) où se termine l’en-tête.. La palette et les données d’image brutes peuvent suivre l’en-tête brut dans n’importe quel ordre et la palette peut être omise lorsque cela n’est pas nécessaire.
Palette DWORDSize
Contient la taille, en octets, de la palette de couleurs. Lorsqu’aucune palette n’est requise pour être attachée aux données d’image brutes, minidriver doit définir ce champ sur 0. Ce champ n’est pas lié au nombre d’entrées dans la palette.
Les données en noir et blanc et en nuances de gris peuvent omettre la palette (car les informations nécessaires à la création de la palette sont contenues dans le champ PhotometricInterpretation ) ou fournir une palette optimisée avec le champ PhotometricInterpretation .
Pour les images indexées, le nombre d’entrées dans la palette de couleurs est dicté par la valeur BitsPerPixel actuelle (2 ^ BitsPerPixel. Par exemple, 2 entrées pour 1bpp, 16 entrées pour 4bpp, 256 entrées pour 8bpp). Le format des entrées de palette est dicté par le nombre d’entrées dans le champ BitsPerChannel (le nombre de champs/canaux dans chaque entrée de palette) et les valeurs BitsPerChannel (chaque champ contiendrait exactement la valeur spécifiée dans le champ BitsPerChannel pour le canal respectif). Chaque champ d’entrée de palette doit être aligné sur BYTE.