我将尝试在不解码文件的情况下获取JPEG图像的分辨率。我从互联网上获得了几个样本,但没有一个正常工作。这似乎是因为许多JPEG文件不是标准的,尽管任何图形应用程序(Irfan、PSP、Firefox等)都可以打开它们。
JPEG头应该是:
JPEG头应该是:
typedef struct _JFIFHeader
{
BYTE SOI[2]; /* 00h Start of Image Marker */
BYTE APP0[2]; /* 02h Application Use Marker */
BYTE Length[2]; /* 04h Length of APP0 Field */
BYTE Identifier[5]; /* 06h "JFIF" (zero terminated) Id String */
BYTE Version[2]; /* 07h JFIF Format Revision */
BYTE Units; /* 09h Units used for Resolution */
BYTE Xdensity[2]; /* 0Ah Horizontal Resolution */
BYTE Ydensity[2]; /* 0Ch Vertical Resolution */
BYTE XThumbnail; /* 0Eh Horizontal Pixel Count */
BYTE YThumbnail; /* 0Fh Vertical Pixel Count */
} JFIFHEAD;
然而,当我查看其中一个非标准文件时,Xdensity和Ydensity字段是错误的。但是,所有图形应用程序都可以读取此非标准文件。
有人知道一段Delphi代码,可以实际上读取所有JPEG文件吗?
Delphi 7,Win 7 32位