我已经创建了一个C++结构体,用于读取和验证JFIF文件格式的头部。 该结构如下所示...
#pragma pack(1)
typedef struct _JFIF_Header
{
WORD SOIMarker; // start of image marker
WORD APP0_Marker; // Application use marker
WORD APP0_Length; // Length of APP0 field
BYTE Identifier[5]; // zero terminating string "JFIF",X'4A', X'46', X'49', X'46', X'00'
BYTE Version[2]; // X'01',X'02'
BYTE Units; // units = 0:no units ;; units = 1:X and Y are dots per inch ;; units = 2:X and Y are dots per cm
WORD XDensity; // horizontal pixel density
WORD YDensity; // vertical pixel density
BYTE XThumbnail; // Thumbnail horizontal pixel density
BYTE YThumbnail; // Thumbnail vertical pixel density
}JFIFHeader;
已经从原始磁盘扇区中读取数据并将这些字节复制到JFIFHeader
结构中,一切正常。
现在的问题是,保存在XDensity
和YDensity
变量中的值非常高(我在Hex编辑器中读取了一个图像,X:24576,Y:24576
),这个值不能是图像的实际宽度和高度。
Units
的值为0x01
,即单位为“每英寸像素数”。
如何从这些值中获取实际图像分辨率1024x826
?如果这不是正确的方法,请给我任何其他替代方案。