WIA 原始数据标头

RAW 数据的标头如下所示:

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) 

其他标头字段说明

DWORD 压缩
允许压缩的原始格式,例如尼康的压缩 NEF 和无标头压缩数据,用于压缩传真传输 (组 3.1、3.2d、4) 。 此字段的值将WIA_IPA_COMPRESSION常量,可能是特定于专用应用程序的供应商。 默认值为 WIA_COMPRESSION_NONE。

压缩示例:

G4 压缩数据 (WIA_COMPRESSION_G4) 可以在 TIFF 文件中传输 (WiaImgFmt_TIFF) 或使用原始格式 (WiaImgFmt_RAW) 。

可以使用 JFIF 格式 (WiaImgFmt_JPEG) 、EEXIF 格式 (WiaImgFmt_EXIF) 或 TIFF 格式 (WiaImgFmt_TIFF) 传输 JPEG 压缩数据 (WIA_COMPRESSION_JPEG) 。 不能使用原始格式 (WiaImgFmt_RAW) 传输中的交换格式 (JFIF、EEXIF) 之一的交换格式的 JPEG 数据 - 相反,需要使用其他与 JPEG 兼容的格式之一。

有关 WIA 压缩常量的详细信息,请参阅 WIA_IPA_COMPRESSION 属性。

DWORD PhotometricInterp
描述传输的图像的光度解释。 对于黑白 (1bpp) 和灰度 (4bpp 或更高) 图像,此字段是必需的。 这些图像需要指示白色和黑色的值,WIA_PHOTO_WHITE_1 (白色为 1,黑色为 0) ,或WIA_PHOTO_WHITE_0 (其中白色为 0,黑色为 1) 。 对于彩色图像,此字段是可选的。

DWORD LineOrder
描述是按从上到下还是从下到上对图像数据中的行/行进行排序。 wiadef.h 中为此定义了两个新常量:

#define  WIA_LINE_ORDER_TOP_TO_BOTTOM        0x00000001 
#define  WIA_LINE_ORDER_BOTTOM_TO_TOP        0x00000002

没有为此定义新属性。 这不是可配置的扫描设置。 LingOrder 仅在执行图像数据传输时很重要。

DWORD RawDataSize
指示标头后的原始数据的大小(以字节为单位), (不包括可选调色板) 。 应用程序可以使用此字段来验证假定成功传输图像的完成情况。 当微型驱动程序在传输开始时不知道此信息 (并且标头写入流) (例如,在使用自动边框检测扫描图像时),应要求微型驱动程序在图像数据传输结束时填充此字段,类似于处理 XExtent 和 YExtent 字段的方式。

DWORD PaletteOffset
包含偏移量(以字节为单位),其中调色板从数据流中开始;此偏移量从 () 标头结束的位置开始。 调色板和原始图像数据可以按任意顺序遵循原始标头,并且可以在不需要时省略调色板。

DWORD PaletteSize
包含调色板的大小(以字节为单位)。 无需将调色板附加到原始图像数据时,微型驱动程序应将此字段设置为 0。 此字段与调色板中的条目数无关。

黑白和灰度数据可以省略调色板 (,因为构建调色板所需的信息包含在 PhotometricInterpretation 字段) 或提供优化的调色板以及 PhotometricInterpretation 字段。

对于索引图像,调色板中的条目数由当前 BitsPerPixel 值 (2 ^ BitsPerPixel 决定。例如,2 个条目用于 1bpp,16 个条目用于 4bpp,256 个条目用于 8bpp) 。 调色板条目的格式将由 BitsPerChannel 字段中的条目数决定, (每个调色板条目) 和 BitsPerChannel 值中的字段/通道数 (每个字段将完全包含相应通道) 的 BitsPerChannel 字段中指定的值。 每个调色板输入字段都必须是 BYTE 对齐的。