Image-EXIF
view release on metacpan or search on metacpan
{ 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" },
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" },
{ 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. */
{ 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 },
{ 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[] = {
/* 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 && \
{ 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 },
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 },
};
{ 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 },
*
*/
#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" },
};
/* 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 },
*
*/
#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" },
/* 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 },
{ 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.728 second using v1.01-cache-2.11-cpan-49f99fa48dc )