Image-EXIF

 view release on metacpan or  search on metacpan

asahi.c  view on Meta::CPAN

	{ 4,	"1600x1200" },
	{ 22,	"2304x1728" },
	{ -1,	"Unknown" },
};


/* Focus mode. */

static struct descrip asahi_focus[] = {
	{ 0,	"Normal" },
	{ 1,	"Macro" },
	{ 2,	"Macro" },
	{ 3,	"Infinity" },
	{ -1,	"Unknown" },
};


/* White balance. */

static struct descrip asahi_whiteb[] = {
	{ 0,	"Auto" },
	{ 1,	"Daylight" },

canon.c  view on Meta::CPAN

	n = (abs(v) - 32) * (v & 0x8000 ? -1 : 1);
	if (n == 20 || n == -12) v++;
	else if (n == -20 || n == 12) v--;
#endif

	if (c) snprintf(c, l, "%.2f EV", (float)v / 32);
	return ((float)v / 32);
}


/* Macro mode. */

static struct descrip canon_macro[] = {
	{ 1,	"Macro" },
	{ 2,	"Normal" },
	{ -1,	"Unknown" },
};


/* Focus type. */

static struct descrip canon_focustype[] = {
	{ 0,	"Manual" },
	{ 1,	"Auto" },
	{ 2,	"Auto" },
	{ 3,	"Close-Up (Macro Mode)" },
	{ 7,	"Infinity Mode" },
	{ 8,	"Locked (Pan Mode)" },
	{ -1,	"Unknown" },
};


/* Quality. */

static struct descrip canon_quality[] = {
	{ 2,	"Normal" },

canon.c  view on Meta::CPAN

	{ 0,	"Full Auto" },
	{ 1,	"Manual" },
	{ 2,	"Landscape" },
	{ 3,	"Fast Shutter" },
	{ 4,	"Slow Shutter" },
	{ 5,	"Night" },
	{ 6,	"Black & White" },
	{ 7,	"Sepia" },
	{ 8,	"Portrait" },
	{ 9,	"Sports" },
	{ 10,	"Macro/Close-Up" },
	{ 11,	"Pan Focus" },
	{ 19,	"Indoor" },
	{ 22,	"Underwater" },
	{ 24,	"Kids & Pets" },
	{ 25,	"Night Snapshot" },
	{ -1,	"Unknown" },
};


/* Digital zoom. */

canon.c  view on Meta::CPAN

	{ 0xffff, TIFF_UNKN,  0,  ED_UNK, "CanonUnknown",
	  "Canon Unknown", NULL },
};


/* Fields under tag 0x0001 (camera settings). */

static struct exiftag canon_tags01[] = {
	{ 0,  TIFF_SHORT, 0, ED_VRB, "Canon1Len",
	  "Canon Tag1 Length", NULL },
	{ 1,  TIFF_SHORT, 0, ED_IMG, "CanonMacroMode",
	  "Macro Mode", canon_macro },
	{ 2,  TIFF_SHORT, 0, ED_VRB, "CanonTimerLen",
	  "Self-Timer Length", NULL },
	{ 3,  TIFF_SHORT, 0, ED_IMG, "CanonQuality",
	  "Compression Setting", canon_quality },
	{ 4,  TIFF_SHORT, 0, ED_IMG, "CanonFlashMode",
	  "Flash Mode", canon_flash },
	{ 5,  TIFF_SHORT, 0, ED_IMG, "CanonDriveMode",
	  "Drive Mode", canon_drive },
	{ 7,  TIFF_SHORT, 0, ED_IMG, "CanonFocusMode",
	  "Focus Mode", canon_focus1 },

casio.c  view on Meta::CPAN

	{ 1,	"Economy" },
	{ 2,	"Normal" },
	{ 3,	"Fine" },
	{ -1,	"Unknown" },
};


/* Focus mode. */

static struct descrip casio_focus[] = {
	{ 2,	"Macro" },
	{ 3,	"Auto" },
	{ 4,	"Manual" },
	{ 5,	"Infinity" },
	{ -1,	"Unknown" },
};


/* Flash mode. */

static struct descrip casio_flash[] = {

exifint.h  view on Meta::CPAN



/* List of IFD offsets, to detect loops. */

struct ifdoff {
	unsigned char *offset;	/* Offset to IFD. */
	struct ifdoff *next;	/* Next IFD in list. */
};


/* Macro for making sense of a fraction. */

#define fixfract(str, n, d, t)	{ \
	if ((t)) { (n) /= (t); (d) /= (t); } \
	if (!(n)) sprintf((str), "0"); \
	else if (!(d)) sprintf((str), "Infinite"); \
	else if (abs((n)) == abs((d))) sprintf((str), "%d", (n) / (d)); \
	else if (abs((d)) == 1) snprintf((str), 31, "%d", (n) / (d)); \
	else if (abs((n)) > abs((d))) snprintf((str), 31, "%.1f", \
	    (double)(n) / (double)(d)); \
	else if (abs((d)) > 2 && abs((n)) > 1 && \

fuji.c  view on Meta::CPAN

	{ 0x1002, TIFF_SHORT, 1, ED_IMG, "FujiWhiteBal",
	  "White Balance", fuji_white },
	{ 0x1003, TIFF_SHORT, 1, ED_IMG, "FujiColor",
	  "Chroma Saturation", fuji_color },
	{ 0x1004, TIFF_SHORT, 1, ED_IMG, "FujiTone",
	  "Contrast", fuji_color },
	{ 0x1010, TIFF_SHORT, 1, ED_IMG, "FujiFlashMode",
	  "Flash Mode", fuji_flmode },
	{ 0x1011, TIFF_SRTNL, 1, ED_UNK, "FujiFlashStrength",
	  "Flash Strength", NULL },
	{ 0x1020, TIFF_SHORT, 1, ED_IMG, "FujiMacro",
	  "Macro Mode", fuji_bool },
	{ 0x1021, TIFF_SHORT, 1, ED_IMG, "FujiFocusMode",
	  "Focus Mode", fuji_focus },
	{ 0x1030, TIFF_SHORT, 1, ED_IMG, "FujiSlowSync",
	  "Slow Synchro Mode", fuji_bool },
	{ 0x1031, TIFF_SHORT, 1, ED_IMG, "FujiPicMode",
	  "Picture Mode", fuji_picture },
	{ 0x1100, TIFF_SHORT, 1, ED_IMG, "FujiBracket",
	  "Continuous/Bracketing Mode", fuji_bool },
	{ 0x1300, TIFF_SHORT, 1, ED_IMG, "FujiBlurWarn",
	  "Blur Status", fuji_blurw },

leica.c  view on Meta::CPAN


static struct exiftag leica_tags[] = {
	{ 0x0001, TIFF_ASCII, 8, ED_IMG, "LeicaCompress",
	  "Compression Rate", leica_compress },
	{ 0x0003, TIFF_SHORT, 1, ED_IMG, "LeicaWhiteBal",
	  "White Balance", leica_white },
	{ 0x0007, TIFF_SHORT, 1, ED_IMG, "LeicaFocusMode",
	  "Focus Mode", leica_focus },
	{ 0x000f, TIFF_SHORT, 1, ED_IMG, "LeicaSpotAF",
	  "Spot Autofocus", leica_spotaf },
	{ 0x001c, TIFF_SHORT, 1, ED_IMG, "LeicaMacro",
	  "Macro Mode", leica_bool },
	{ 0x001f, TIFF_SHORT, 1, ED_IMG, "LeicaAperture",
	  "Aperture Mode", leica_aperture },
	{ 0x0024, TIFF_SHORT, 1, ED_IMG, "LeicaFlashEV",
	  "Flash Compensation", leica_flashev },
	{ 0x002c, TIFF_SHORT, 1, ED_IMG, "LeicaContrast",
	  "Contrast", leica_contrast },
	{ 0xffff, TIFF_UNKN, 0, ED_UNK, "LeicaUnknown",
	  "Leica Unknown", NULL },
};

minolta.c  view on Meta::CPAN

	{ 6,  TIFF_LONG, 1, ED_IMG, "MinoltaDriveMode",
	  "Drive Mode", minolta_drive },
	{ 7,  TIFF_LONG, 1, ED_IMG, "MinoltaMeterMode",
	  "Metering Mode", minolta_metermode },
	{ 8,  TIFF_LONG, 1, ED_UNK, "MinoltaFilmSpeed",
	  "Film Speed", NULL },
	{ 9,  TIFF_LONG, 1, ED_VRB, "MinoltaExpTime",
	  "Exposure Time", NULL },
	{ 10, TIFF_LONG, 1, ED_UNK, "MinoltaAperture",
	  "Lens Aperture", NULL },
	{ 11, TIFF_LONG, 1, ED_IMG, "MinoltaMacro",
	  "Macro", minolta_bool },
	{ 12, TIFF_LONG, 1, ED_IMG, "MinoltaDigiZoom",
	  "Digital Zoom", minolta_bool },
	{ 13, TIFF_LONG, 1, ED_UNK, "MinoltaExpComp",
	  "Exposure Compensation", NULL },
	{ 14, TIFF_LONG, 1, ED_IMG, "MinoltaBracketStep",
	  "Bracketing Step", minolta_brackstep },
	{ 16, TIFF_LONG, 1, ED_VRB, "MinoltaIntrvlTime",
	  "Interval Time", NULL },
	{ 17, TIFF_LONG, 1, ED_VRB, "MinoltaIntrvlPics",
	  "Interval Pics", NULL },

olympus.c  view on Meta::CPAN

 *
 */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include "makers.h"


/* Macro mode. */

static struct descrip olympus_macro[] = {
	{ 0,	"Normal" },
	{ 1,	"Macro" },
	{ -1,	"Unknown" },
};


/* Quality. */

static struct descrip olympus_quality[] = {
	{ 1,	"SQ" },
	{ 2,	"HQ" },
	{ 3,	"SHQ" },

olympus.c  view on Meta::CPAN

};


/* Maker note IFD tags. */

static struct exiftag olympus_tags[] = {
	{ 0x0200, TIFF_LONG, 3, ED_UNK, "OlympusShootMode",
	  "Shooting Mode", NULL },
	{ 0x0201, TIFF_SHORT, 1, ED_IMG, "OlympusQuality",
	  "Compression Setting", olympus_quality },
	{ 0x0202, TIFF_SHORT, 1, ED_IMG, "OlympusMacroMode",
	  "Macro Mode", olympus_macro },
	{ 0x0204, TIFF_RTNL, 1, ED_UNK, "OlympusDigiZoom",
	  "Digital Zoom", NULL },
	{ 0x0207, TIFF_ASCII, 5, ED_UNK, "FirmwareVer",
	  "Firmware Version", NULL },
	{ 0x0208, TIFF_ASCII, 52, ED_UNK, "OlympusPicInfo",
	  "Picture Info", NULL },
	{ 0x0209, TIFF_UNKN, 32, ED_UNK, "OlympusCameraID",
	  "Camera ID", NULL },
	{ 0xffff, TIFF_UNKN, 0, ED_UNK, "Unknown",
	  "Olympus Unknown", NULL },

panasonic.c  view on Meta::CPAN

/* Optical Image Stabilizer mode. */

static struct descrip panasonic_ois[] = {
	{ 2,	"Mode 1" },
	{ 3,	"Off" },
	{ 4,	"Mode 2" },
	{ -1,	"Unknown" },
};


/* Macro. */

static struct descrip panasonic_macro[] = {
	{ 1,	"Macro" },
	{ 2,	"Normal" },
	{ -1,	"Unknown" },
};


/* Shooting mode. */

static struct descrip panasonic_shoot[] = {
	{ 2,	"Portrait" },
	{ 3,	"Scenery" },
	{ 4,	"Sports" },
	{ 5,	"Night Portrait" },
	{ 6,	"Program" },
	{ 7,	"Aperture Priority" },
	{ 8,	"Shutter Priority" },
	{ 9,	"Macro" },
	{ 11,	"Manual" },
	{ 13,	"Panning" },
	{ 18,	"Fireworks" },
	{ 19,	"Party" },
	{ 20,	"Snow" },
	{ 21,	"Night Scenery" },
	{ -1,	"Unknown" },
};


panasonic.c  view on Meta::CPAN

	{ 0x0001, TIFF_SHORT, 1, ED_IMG, "PanasonicQuality",
	  "Image Quality", panasonic_quality },
	{ 0x0003, TIFF_SHORT, 1, ED_IMG, "PanasonicWhiteB",
	  "White Balance", panasonic_whitebal },
	{ 0x0007, TIFF_SHORT, 1, ED_IMG, "PanasonicFocus",
	  "Focus Mode", panasonic_focus },
	{ 0x000f, TIFF_BYTE, 1, ED_IMG, "PanasonicSpotMode",
	  "Spot Mode", panasonic_spot },
	{ 0x001a, TIFF_SHORT, 1, ED_IMG, "PanasonicOIS",
	  "Image Stabilizer", panasonic_ois },
	{ 0x001c, TIFF_SHORT, 1, ED_IMG, "PanasonicMacroMode",
	  "Macro Mode", panasonic_macro },
	{ 0x001f, TIFF_SHORT, 1, ED_IMG, "PanasonicShootMode",
	  "Shooting Mode", panasonic_shoot },
	{ 0x0020, TIFF_SHORT, 1, ED_IMG, "PanasonicAudio",
	  "Audio", panasonic_audio },
	{ 0x0023, TIFF_SHORT, 1, ED_UNK, "PanasonicWBAdjust",
	  "White Balance Adjust", NULL },
	{ 0x0024, TIFF_SSHORT, 1, ED_IMG, "PanasonicFlashBias",
	  "Flash Bias", NULL },
	{ 0x0028, TIFF_SHORT, 1, ED_IMG, "PanasonicColorEffect",
	  "Color Effect", panasonic_color },

sanyo.c  view on Meta::CPAN

 *
 */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include "makers.h"


/* Macro mode. */

static struct descrip sanyo_macro[] = {
	{ 0,	"Normal" },
	{ 1,	"Macro" },
	{ -1,	"Unknown" },
};


/* Quality. */

static struct descrip sanyo_quality[] = {
	{ 0,	"Normal" },
	{ 1,	"Fine" },
	{ 2,	"Superfine" },

sanyo.c  view on Meta::CPAN


/* Maker note IFD tags. */

static struct exiftag sanyo_tags[] = {
	{ 0x0100, TIFF_UNKN, 0, ED_UNK, "SanyoThumb",
	  "JPEG Thumbnail", NULL },
	{ 0x0200, TIFF_LONG, 3, ED_VRB, "SanyoShootMode",
	  "Shooting Mode", NULL },
	{ 0x0201, TIFF_SHORT, 1, ED_IMG, "SanyoQuality",
	  "Quality Setting", NULL },
	{ 0x0202, TIFF_SHORT, 1, ED_IMG, "SanyoMacroMode",
	  "Macro Mode", sanyo_macro },
	{ 0x0204, TIFF_RTNL, 1, ED_IMG, "SanyoDigiZoom",
	  "Digital Zoom", NULL },
	{ 0x0207, TIFF_ASCII, 5, ED_IMG, "SanyoFirmware",
	  "Firmware Version", NULL },
	{ 0x0208, TIFF_ASCII, 52, ED_IMG, "SanyoPicInfo",
	  "Picture Info", NULL },
	{ 0x0209, TIFF_UNKN, 32, ED_UNK, "SanyoCameraID",
	  "Camera ID", NULL },
	{ 0x020e, TIFF_SHORT, 1, ED_IMG, "SanyoSeqShot",
	  "Sequential Shot Method", sanyo_seqshot },

tagdefs.c  view on Meta::CPAN

	{ 0,	"Normal" },
	{ 1,	"Low" },
	{ 2,	"High" },
	{ -1,	"Unknown" },
};


/* Subject distance range. */

struct descrip subjdist[] = {
	{ 1,	"Macro" },
	{ 2,	"Close View" },
	{ 3,	"Distant View" },
	{ -1,	"Unknown" },
};


/* Exif 2.2 tags. */

struct exiftag tags[] = {
	{ 0x0100, TIFF_UNKN,  1,  ED_IMG, 		/* columns */



( run in 0.591 second using v1.01-cache-2.11-cpan-49f99fa48dc )