Получение разрешения JPEG без декодирования изображения

Я пытаюсь получить разрешение изображения JPEG без декодирования файла. Я получил несколько образцов из Интернета, но ни один из них не работает должным образом. Кажется, это так, потому что многие файлы JPEG не являются стандартными, хотя любое графическое приложение (Irfan, PSP, Firefox и т. Д.) Может их открыть.

Заголовок 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;

Однако, когда я заглянул в один из этих нестандартных файлов, поля Xde density и Yde density оказались неправильными. Но опять же, все графические приложения могут читать этот нестандартный файл.

Кто-нибудь знает фрагмент кода Delphi, который действительно может читать все файлы JPEG?


Delphi 7, Win 7 32 bit

6
задан Aaron D 22 October 2010 в 23:58
поделиться