exif icon indicating copy to clipboard operation
exif copied to clipboard

simple implementation to access the Exif segment in the JPEG file

"exif.c" is a simple implementation to access the Exif segment in a JPEG file. It easily enables you to get the value of the IFD tag field with such code:

TagNodeInfo *tag = getTagInfo(ifdArray, IFD_EXIF, TAG_DateTimeOriginal); printf("DateTimeOriginal = [%s]\n", tag->byteData);

-> DateTimeOriginal = [2013:09:01 09:49:00]

See "sample_main.c" and "exif.h" for details.

exif.c only uses standard C library functions. So, it will be usable in many environments. It has been tested in the following environments.

  • Windows XP 32bit + 32bit Visual C++
  • Windows 7 64bit + 64bit Visual C++
  • Redhat Linux 32bit + 32bit gcc
  • Mac OS X 64bit + 64bit gcc

building with gcc: gcc -o exif sample_main.c exif.c

building with Microsoft Visual C++: cl.exe /o exif sample_main.c exif.c

The following output is the result of the sample program.

$ exif test.jpg

[test.jpg] createIfdTableArray: result=4

{0TH IFD}

  • Make: [Apple]
  • Model: [iPod touch]
  • Orientation: 1
  • XResolution: 72/1
  • YResolution: 72/1
  • ResolutionUnit: 2
  • Software: [6.1.4]
  • DateTime: [2013:09:01 09:49:00]
  • YCbCrPositioning: 1
  • ExifIFDPointer: 206
  • GPSInfoIFDPointer: 576

{EXIF IFD}

  • ExposureTime: 1/30
  • FNumber: 12/5
  • ExposureProgram: 2
  • PhotographicSensitivity: 400
  • ExifVersion: 0 2 2 1
  • DateTimeOriginal: [2013:09:01 09:49:00]
  • DateTimeDigitized: [2013:09:01 09:49:00]
  • ComponentsConfiguration: 0x01 0x02 0x03 0x00
  • ShutterSpeedValue: 4035/821
  • ApertureValue: 4845/1918
  • BrightnessValue: 2234/1113
  • MeteringMode: 5
  • Flash: 32
  • FocalLength: 77/20
  • FlashPixVersion: 0 1 0 0
  • ColorSpace: 1
  • PixelXDimension: 960
  • PixelYDimension: 720
  • SensingMethod: 2
  • ExposureMode: 0
  • WhiteBalance: 0
  • FocalLengthIn35mmFormat: 32
  • SceneCaptureType: 0

{GPS IFD}

  • GPSLatitudeRef: [S]
  • GPSLatitude: 69/1 17/100 0/1
  • GPSLongitudeRef: [E]
  • GPSLongitude: 39/1 35/100 0/1
  • GPSAltitudeRef: 0
  • GPSAltitude: 6151/470
  • GPSTimeStamp: 0/1 48/1 3921/100

{1ST IFD}

  • Compression: 6
  • XResolution: 72/1
  • YResolution: 72/1
  • ResolutionUnit: 2
  • JPEGInterchangeFormat: 840
  • JPEGInterchangeFormatLength: 8648

0th IFD : Model = [iPod touch] Exif IFD : DateTimeOriginal = [2013:09:01 09:49:00] GPS IFD : GPSLatitude = 69/1 17/100 0/1 removeExifSegmentFromJPEGFile: result=1

http://dsas.blog.klab.org/archives/52123322.html (Japanese only)

Copyright (C) 2013 KLab Inc.