Common Lisp Package: ZPB-EXIF

README:

FUNCTION

Public

EXIF-ALIST (EXIF &KEY PARSEDP)

Return the keys and values from the Image, Exif, and GPS IFDs of EXIF.

IFD-ALIST (IFD &KEY PARSEDP)

Return all the values in IFD as an alist.

MAKE-EXIF (OBJECT)

Read and create an exif object from OBJECT, which may be a pathname designator or a stream.

THUMBNAIL-IMAGE (EXIF)

Return an (UNSIGNED-BYTE 8) vector containing the JPEG data for the thumbnail image in EXIF, if present. If there is no thumbnail, return NIL.

Undocumented

ENTRY-VALUE (IFD-ENTRY)

EXIF-DATA (EXIF)

EXIF-VALUE (TAG EXIF)

IFD-ENTRY (TAG IFD)

PARSE-EXIF-DATA (FILE)

PARSED-ENTRY-VALUE (IFD-ENTRY)

PARSED-EXIF-VALUE (TAG EXIF)

Private

CHECK-BYTES (STREAM &REST BYTES)

Return true if next bytes of STREAM match the list BYTES.

IMMEDIATE-VALUE-P (TYPE COUNT)

Can COUNT items of TYPE be stored in the 32-bit IFD entry value offset area?

MAKE-EXIF-FROM-STREAM (STREAM)

Extract an Exif object from the open (unsigned-byte 8) STREAM. The stream must be positioned at the beginning of JPEG data. If the stream is not a JPEG stream, raise INVALID-JPEG-STREAM. If the stream does not contain Exif data, raise INVALID-EXIF-STREAM.

PARSE-DATETIME (STRING)

Convert an Exif datetime string in the form "YYYY:MM:DD hh:mm:ss" to a universal time.

SEEK-TO-APP1 (STREAM)

Position STREAM after the #xFF, #xE1 marker in the JPEG stream representing the APP1 segment. Raise an INVALID-EXIF-STREAM error if no APP1 segment can be found.

Undocumented

%IFD-ENTRY (TAG IFD)

BISECT-FIND (OBJECT VECTOR &KEY (KEY #'IDENTITY))

EXIF-TYPE-PARSER-FUN (EXIF-TYPE)

FIND-IFD-ENTRY (TAG EXIF)

GET-16 (POS EXIF)

GET-16/LSB (POS BUF)

GET-16/MSB (POS BUF)

GET-32 (POS EXIF)

GET-32/LSB (POS BUF)

GET-32/MSB (POS BUF)

GET-8 (POS EXIF)

GET-8/* (POS BUF)

GET-ASCII (TYPE COUNT POS EXIF)

GET-BYTE (TYPE COUNT POS EXIF)

GET-LONG (TYPE COUNT POS EXIF)

GET-RATIONAL (TYPE COUNT POS EXIF)

GET-SHORT (TYPE COUNT POS EXIF)

GET-SLONG (TYPE COUNT POS EXIF)

GET-SRATIONAL (TYPE COUNT POS EXIF)

GET-STRING (POS LENGTH EXIF)

GET-UNDEFINED (TYPE COUNT POS EXIF)

GET-UNKNOWN-TYPE (TYPE &REST ARGS)

INITIALIZE-EXIF-IFDS (EXIF)

INITIALIZE-IFD-ENTRY (IFD-ENTRY)

LONG->SLONG (LONG)

MAKE-EXIF-FROM-FILE (FILE)

READ-IFD (POS TAGSET EXIF)

READ-IFD-ENTRY (POS IFD EXIF)

READ-IFD-VALUE (TYPE COUNT POS EXIF)

READ-JPEG-UINT16 (STREAM)

TAG-CODE (NAME TAGSET)

TAG-DESIGNATOR (TAG TAGSET)

TAG-NAME (CODE TAGSET)

TAG-TYPE (CODE TAGSET)

MACRO

Private

DO-GETS ((J START STEP COUNT) &BODY BODY)

Evaluate BODY COUNT times, binding J to START initially, then incrementing it by STEP. The results of the evaluation are returned as a vector.

Undocumented

DEFINE-EXIF-TYPE (NAME (BASE-TYPE) &REST OPTIONS)

DEFINE-TAGSET (NAME &BODY TAG-DEFINITIONS)

SLOT-ACCESSOR

Public

Undocumented

EXIF-IFD (OBJECT)

SETFEXIF-IFD (NEW-VALUE OBJECT)

GPS-IFD (OBJECT)

SETFGPS-IFD (NEW-VALUE OBJECT)

IMAGE-IFD (OBJECT)

SETFIMAGE-IFD (NEW-VALUE OBJECT)

INTEROPERABILITY-IFD (OBJECT)

SETFINTEROPERABILITY-IFD (NEW-VALUE OBJECT)

THUMBNAIL-IFD (OBJECT)

SETFTHUMBNAIL-IFD (NEW-VALUE OBJECT)

Private

OFFSET (OBJECT)

The position in the input stream from where the Exif data was read.

Undocumented

%VALUE (OBJECT)

COUNT (OBJECT)

DATA (OBJECT)

ENDIANNESS (OBJECT)

ENTRIES (OBJECT)

SETFENTRIES (NEW-VALUE OBJECT)

EXIF (OBJECT)

FILE (OBJECT)

GET-16-FUNCTION (OBJECT)

GET-32-FUNCTION (OBJECT)

IFD (OBJECT)

NAME (OBJECT)

NEXT-IFD-OFFSET (OBJECT)

SETFNEXT-IFD-OFFSET (NEW-VALUE OBJECT)

TAG (OBJECT)

TAGSET (OBJECT)

SETFTAGSET (NEW-VALUE OBJECT)

TYPE (OBJECT)

SETFVALUE (NEW-VALUE OBJECT)

VALUE-OFFSET (OBJECT)

VARIABLE

Private

Undocumented

*OPTIMIZATIONS*

*READER-FUNCTIONS/LSB*

*READER-FUNCTIONS/MSB*

*TYPE-READERS*

CLASS

Public

Undocumented

IFD-ENTRY (TAG IFD)

Private

Undocumented

EXIF (OBJECT)

IFD (OBJECT)

TAGSET-ENTRY

CONDITION

Public

Undocumented

INVALID-EXIF-STREAM

INVALID-JPEG-STREAM

INVALID-STREAM