UNPKG

exif

Version:

A node.js library to extract Exif metadata from images.

71 lines (60 loc) 1.98 kB
/** * Extracts Sanyo flavored Makernotes. */ exports.extractMakernotes = function (data, makernoteOffset, tiffOffset) { // List of vendor specific Makernote tags found on // http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/Sanyo.html var tags = { 0x00FF : "MakerNoteOffset", 0x0100 : "SanyoThumbnail", 0x0200 : "SpecialMode", 0x0201 : "SanyoQuality", 0x0202 : "Macro", 0x0204 : "DigitalZoom", 0x0207 : "SoftwareVersion", 0x0208 : "PictInfo", 0x0209 : "CameraID", 0x020E : "SequentialShot", 0x020F : "WideRange", 0x0210 : "ColorAdjustmentMode", 0x0213 : "QuickShot", 0x0214 : "SelfTimer", 0x0216 : "VoiceMemo", 0x0217 : "RecordShutterRelease", 0x0218 : "FlickerReduce", 0x0219 : "OpticalZoomOn", 0x021B : "DigitalZoomOn", 0x021D : "LightSourceSpecial", 0x021E : "Resaved", 0x021F : "SceneSelect", 0x0223 : function (entry) { switch (entry.format) { case 0x0005: return "ManualFocusDistance"; case 0x0007: return "FaceInfo"; default: return false; } }, 0x0224 : "SequenceShotInterval", 0x0225 : "FlashMode", 0x0E00 : "PrintIM", 0x0F00 : "DataDump" }; // Sanyo flavored Makernote data starts after eight bytes var ifdOffset = makernoteOffset + 8; // Get the number of entries and extract them var numberOfEntries = data.getShort(ifdOffset, this.isBigEndian); if (this.options.sanyoMaxEntries) { numberOfEntries=Math.min(numberOfEntries, this.options.sanyoMaxEntries); } var makernoteData = {}; for (var i = 0; i < numberOfEntries; i++) { var exifEntry = this.extractExifEntry(data, (ifdOffset + 2 + (i * 12)), tiffOffset, this.isBigEndian, tags); if (exifEntry && exifEntry.tagName) { makernoteData[exifEntry.tagName] = exifEntry.value; } } return makernoteData; };