BMP文件结构中数据类型FXPT2DOT30是如何定义的?
Posted
技术标签:
【中文标题】BMP文件结构中数据类型FXPT2DOT30是如何定义的?【英文标题】:How is defined the data type FXPT2DOT30 in the BMP file structure? 【发布时间】:2014-01-01 01:13:03 【问题描述】:类型 FXPT2DOT30 出现在为 BMP 文件定义 struct CIEXYZ 时, 根据微软提供的定义:
http://msdn.microsoft.com/en-us/library/windows/desktop/dd371828(v=vs.85).aspx
但是,我无法在任何地方找到 FXPT2DOT30 的确切定义。 它的准确定义是什么? 应该保存什么样的数据?
【问题讨论】:
此问题已回答here @RobinGreen 非常感谢 【参考方案1】:@RobinGreen 提供了一个link:
这就是我的问题的答案:
[...] FXPT2DOT30 [...] 这意味着它们被解释为具有 2 位整数部分和 30 位小数部分的定点值。
【讨论】:
【参考方案2】:根据fileformat.info,这里是BITMAPV4HEADER
结构的解压版本。 CSType
和GammaRed
之间的字段对应BITMAPV4HEADER
中的CIEXYZTRIPLE bV4Endpoints
。
typedef struct _Win4xBitmapHeader
DWORD Size; /* Size of this header in bytes */
LONG Width; /* Image width in pixels */
LONG Height; /* Image height in pixels */
WORD Planes; /* Number of color planes */
WORD BitsPerPixel; /* Number of bits per pixel */
DWORD Compression; /* Compression methods used */
DWORD SizeOfBitmap; /* Size of bitmap in bytes */
LONG HorzResolution; /* Horizontal resolution in pixels per meter */
LONG VertResolution; /* Vertical resolution in pixels per meter */
DWORD ColorsUsed; /* Number of colors in the image */
DWORD ColorsImportant; /* Minimum number of important colors */
/* Fields added for Windows 4.x follow this line */
DWORD RedMask; /* Mask identifying bits of red component */
DWORD GreenMask; /* Mask identifying bits of green component */
DWORD BlueMask; /* Mask identifying bits of blue component */
DWORD AlphaMask; /* Mask identifying bits of alpha component */
DWORD CSType; /* Color space type */
LONG RedX; /* X coordinate of red endpoint */
LONG RedY; /* Y coordinate of red endpoint */
LONG RedZ; /* Z coordinate of red endpoint */
LONG GreenX; /* X coordinate of green endpoint */
LONG GreenY; /* Y coordinate of green endpoint */
LONG GreenZ; /* Z coordinate of green endpoint */
LONG BlueX; /* X coordinate of blue endpoint */
LONG BlueY; /* Y coordinate of blue endpoint */
LONG BlueZ; /* Z coordinate of blue endpoint */
DWORD GammaRed; /* Gamma red coordinate scale value */
DWORD GammaGreen; /* Gamma green coordinate scale value */
DWORD GammaBlue; /* Gamma blue coordinate scale value */
WIN4XBITMAPHEADER;
【讨论】:
【参考方案3】:来自gdiplus.h
:
typedef long FXPT2DOT30, FAR *LPFXPT2DOT30;
typedef struct tagCIEXYZ
FXPT2DOT30 ciexyzX;
FXPT2DOT30 ciexyzY;
FXPT2DOT30 ciexyzZ;
CIEXYZ;
【讨论】:
以上是关于BMP文件结构中数据类型FXPT2DOT30是如何定义的?的主要内容,如果未能解决你的问题,请参考以下文章