Question

I'm trying to extract information from my photos via Java.

My camera, an Olympus E-510 saves all the pictures with a corrupt makernote directory. When I try to get the tags from the OlympusMakernoteDirectory, there are none. Each directory has one error which turns out to be an "Illegally sized directory" error.

Do I have any chance of somehow accessing the data in the directory? I wouldn't mind juggling bytes but I have no idea where to start :(

Was it helpful?

Solution

Currently working on a javascript only solution. Will contribute it here in the next days: https://github.com/redaktor/exiftool.js (it is just a fork for now)

Some Olympus Cameras seem to store their makernotes only in subIFDs.

I wouldn't mind juggling bytes but I have no idea where to start :(

start here :

this has a special meaning ::

0x3000: 'RawInfo',
0x4000: 'MainInfo',

they can be either pointers to SubIFDs or arrays

some cameras store the "root tags" in 0x4000 ...

{
  0x2010: '_IFDpointer_Equipment', // (misleading name returns many things, e.g. serial)
  0x2020: '_IFDpointer_CameraSettings',
  0x2030: '_IFDpointer_RawDevelopment',
  0x2031: '_IFDpointer_RawDevelopment2',
  0x2040: '_IFDpointer_ImageProcessing',
  0x2050: '_IFDpointer_FocusInfo',

    0x0000: 'MakerNoteVersion',
    0x0001: 'CameraSettings',
    0x0003: 'CameraSettings',
    0x0040: 'CompressedImageSize',
    0x0081: 'PreviewImageData',
    0x0088: 'PreviewImageStart',
    0x0089: 'PreviewImageLength',
    0x0100: 'ThumbnailImage',
    0x0104: 'BodyFirmwareVersion',
    0x0200: 'SpecialMode',
    0x0201: 'Quality',
    0x0202: 'Macro', 
    0x0203: 'BWMode', 
    0x0204: 'DigitalZoom',
    0x0205: 'FocalPlaneDiagonal',
    0x0206: 'LensDistortionParams',
    0x0207: 'Olympus CameraType Values',
    0x0208: 'Olympus TextInfo',
    0x020b: 'EpsonImageWidth',
    0x020c: 'EpsonImageHeight',
    0x020d: 'EpsonSoftware',
    0x0280: 'PreviewImage',
    0x0300: 'PreCaptureFrames',
    0x0301: 'WhiteBoard',
    0x0302: 'OneTouchWB', 
    0x0303: 'WhiteBalanceBracket',
    0x0304: 'WhiteBalanceBias',
    0x0404: 'SerialNumber',
    0x0405: 'Firmware',
    0x0e00: 'PrintIM',
    0x0f00: 'DataDump',
    0x0f01: 'DataDump2',
    0x0f04: 'ZoomedPreviewStart',
    0x0f05: 'ZoomedPreviewLength',
    0x0f06: 'ZoomedPreviewSize',
    0x1000: 'ShutterSpeedValue',
    0x1001: 'ISOValue',
    0x1002: 'ApertureValue',
    0x1003: 'BrightnessValue',
    0x1004: 'FlashMode', 
    0x1006: 'ExposureCompensation',
    0x1007: 'SensorTemperature',
    0x1008: 'LensTemperature',
    0x1009: 'LightCondition',
    0x100a: 'FocusRange', 
    0x100b: 'FocusMode', 
    0x100c: 'ManualFocusDistance',
    0x100d: 'ZoomStepCount',
    0x100e: 'FocusStepCount',
    0x100f: 'Sharpness', 
    0x1010: 'FlashChargeLevel',
    0x1011: 'ColorMatrix',
    0x1012: 'BlackLevel',
    0x1013: 'ColorTemperatureBG?',
    0x1014: 'ColorTemperatureRG?',
    0x1017: 'RedBalance',
    0x1018: 'BlueBalance',
    0x1019: 'ColorMatrixNumber',
    0x101a: 'SerialNumber',
    0x101b: 'ExternalFlashAE1_0?',
    0x101c: 'ExternalFlashAE2_0?',
    0x101d: 'InternalFlashAE1_0?',
    0x101e: 'InternalFlashAE2_0?',
    0x101f: 'ExternalFlashAE1?',
    0x1020: 'ExternalFlashAE2?',
    0x1021: 'InternalFlashAE1?',
    0x1022: 'InternalFlashAE2?',
    0x1023: 'FlashExposureComp',
    0x1024: 'InternalFlashTable',
    0x1025: 'ExternalFlashGValue',
    0x1026: 'ExternalFlashBounce', 
    0x1027: 'ExternalFlashZoom',
    0x1028: 'ExternalFlashMode',
    0x1029: 'Contrast', 
    0x102a: 'SharpnessFactor',
    0x102b: 'ColorControl',
    0x102c: 'ValidBits',
    0x102d: 'CoringFilter',
    0x102e: 'OlympusImageWidth',
    0x102f: 'OlympusImageHeight',
    0x1030: 'SceneDetect',
    0x1031: 'SceneArea?',
    0x1033: 'SceneDetectData?',
    0x1034: 'CompressionRatio',
    0x1035: 'PreviewImageValid', 
    0x1036: 'PreviewImageStart',
    0x1037: 'PreviewImageLength',
    0x1038: 'AFResult',
    0x1039: 'CCDScanMode', 
    0x103a: 'NoiseReduction', 
    0x103b: 'FocusStepInfinity',
    0x103c: 'FocusStepNear',
    0x103d: 'LightValueCenter',
    0x103e: 'LightValuePeriphery',
    0x103f: 'FieldCount?'
}


_IFDpointer_Equipment: {
        0x0000: 'EquipmentVersion',
    //  0x0100: { ref: ' Olympus CameraType Values' }, // TODO
        0x0101: 'SerialNumber',
        0x0102: 'InternalSerialNumber',
        0x0103: 'FocalPlaneDiagonal',
        0x0104: 'BodyFirmwareVersion',
    //  0x0201: { ref: ' Olympus LensType Values' }, // TODO
        0x0202: 'LensSerialNumber',
        0x0203: 'LensModel',
        0x0204: 'LensFirmwareVersion',
        0x0205: 'MaxApertureAtMinFocal',
        0x0206: 'MaxApertureAtMaxFocal',
        0x0207: 'MinFocalLength',
        0x0208: 'MaxFocalLength',
        0x020a: 'MaxAperture',
        0x020b: 'LensProperties',
        0x0301: 'Extender',
        0x0302: 'ExtenderSerialNumber',
        0x0303: 'ExtenderModel',
        0x0304: 'ExtenderFirmwareVersion',
        0x0403: 'ConversionLens',
        0x1000: 'FlashType',
        0x1002: 'FlashFirmwareVersion',
        0x1003: 'FlashSerialNumber' 
    },

    _IFDpointer_CameraSettings: {
        0x0000: 'CameraSettingsVersion',
        0x0100: 'PreviewImageValid',
        0x0101: 'PreviewImageStart',
        0x0102: 'PreviewImageLength',
        0x0200: 'ExposureMode', 
        0x0201: 'AELock', 
        0x0203: 'ExposureShift',
        0x0204: 'NDFilter', 
        0x0300: 'MacroMode', 
        0x0302: 'FocusProcess',
        0x0303: 'AFSearch', 
        0x0304: 'AFAreas',
        0x0305: 'AFPointSelected',
        0x0306: 'AFFineTune', 
        0x0307: 'AFFineTuneAdj', 
        0x0401: 'FlashExposureComp', 
        0x0404: 'FlashControlMode', 
        0x0405: 'FlashIntensity',
        0x0406: 'ManualFlashStrength',
        0x0501: 'WhiteBalanceTemperature',
        0x0502: 'WhiteBalanceBracket',
        0x0503: 'CustomSaturation',
        0x0504: 'ModifiedSaturation',
        0x0505: 'ContrastSetting',
        0x0506: 'SharpnessSetting',
        0x0507: 'ColorSpace',
        0x050a: 'NoiseReduction',
        0x050b: 'DistortionCorrection', 
        0x050c: 'ShadingCompensation', 
        0x050d: 'CompressionFactor',
        0x050f: 'Gradation',
        0x0521: 'PictureModeSaturation',
        0x0522: 'PictureModeHue?',
        0x0523: 'PictureModeContrast',
        0x0524: 'PictureModeSharpness', 
        0x0527: 'NoiseFilter', 
        0x052d: 'PictureModeEffect', 
        0x052e: 'ToneLevel', 
        0x0600: 'DriveMode',
        0x0601: 'PanoramaMode',
        0x0603: 'ImageQuality2', 
        0x0604: 'ImageStabilization', 
        0x0900: 'ManometerPressure',
        0x0901: 'ManometerReading',
        0x0902: 'ExtendedWBDetect', 
        0x0903: 'LevelGaugeRoll', 
        0x0904: 'LevelGaugePitch', 
        0x0908: 'DateTimeUTC' 
    },

    _IFDpointer_RawDevelopment: {
        0x0000: 'RawDevVersion',
        0x0100: 'RawDevExposureBiasValue',
        0x0101: 'RawDevWhiteBalanceValue',
        0x0102: 'RawDevWBFineAdjustment',
        0x0103: 'RawDevGrayPoint',
        0x0104: 'RawDevSaturationEmphasis',
        0x0105: 'RawDevMemoryColorEmphasis',
        0x0106: 'RawDevContrastValue',
        0x0107: 'RawDevSharpnessValue',
        0x0108: 'RawDevColorSpace',
        0x0109: 'RawDevEngine',
        0x010a: 'RawDevNoiseReduction',
        0x010b: 'RawDevEditStatus'
    },
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top