|
44 | 44 | sectionLength, |
45 | 45 | data |
46 | 46 | ) { |
47 | | - function getStringFromDB(buffer, start, length) { |
48 | | - var outstr = "" |
| 47 | + function getStringFromDB (buffer, start, length) { |
| 48 | + var outstr = '' |
49 | 49 | for (var n = start; n < start + length; n++) { |
50 | | - outstr += String.fromCharCode(buffer.getUint8(n)) |
| 50 | + outstr += String.fromCharCode(buffer.getUint8(n)) |
51 | 51 | } |
52 | 52 | return outstr |
53 | 53 | } |
54 | 54 |
|
55 | | - var fieldValue, fieldName, dataSize, segmentType |
| 55 | + var fieldValue, dataSize, segmentType |
56 | 56 | var segmentStartPos = startOffset |
57 | 57 | while (segmentStartPos < startOffset + sectionLength) { |
58 | 58 | // we currently handle the 2: class of iptc tag |
59 | 59 | if (dataView.getUint8(segmentStartPos) === 0x1C && dataView.getUint8(segmentStartPos + 1) === 0x02) { |
60 | | - |
61 | 60 | segmentType = dataView.getUint8(segmentStartPos + 2) |
62 | 61 |
|
63 | 62 | // only store data for known tags |
64 | 63 | if (segmentType in data.iptc.tags) { |
65 | | - |
66 | 64 | dataSize = dataView.getInt16(segmentStartPos + 3) |
67 | | - fieldName = data.iptc.tags[segmentType] |
68 | 65 | fieldValue = getStringFromDB(dataView, segmentStartPos + 5, dataSize) |
69 | 66 |
|
70 | | - // integer field IDs (same as the exif module) |
71 | | - fieldName=segmentType |
72 | | - |
73 | 67 | // Check if we already stored a value with this name |
74 | | - if (data.iptc.hasOwnProperty(fieldName)) { |
| 68 | + if (data.iptc.hasOwnProperty(segmentType)) { |
75 | 69 | // Value already stored with this name, create multivalue field |
76 | | - if (data.iptc[fieldName] instanceof Array) { |
77 | | - data.iptc[fieldName].push(fieldValue) |
78 | | - } |
79 | | - else { |
80 | | - data.iptc[fieldName] = [data.iptc[fieldName], fieldValue] |
| 70 | + if (data.iptc[segmentType] instanceof Array) { |
| 71 | + data.iptc[segmentType].push(fieldValue) |
| 72 | + } else { |
| 73 | + data.iptc[segmentType] = [data.iptc[segmentType], fieldValue] |
81 | 74 | } |
82 | | - } |
83 | | - else { |
84 | | - data.iptc[fieldName] = fieldValue |
| 75 | + } else { |
| 76 | + data.iptc[segmentType] = fieldValue |
85 | 77 | } |
86 | 78 | } |
87 | 79 | } |
|
94 | 86 | return |
95 | 87 | } |
96 | 88 |
|
97 | | - // Found "8BIM<EOT><EOT>" ? |
| 89 | + // Found '8BIM<EOT><EOT>' ? |
98 | 90 | var isFieldSegmentStart = function (dataView, offset) { |
99 | 91 | return ( |
100 | 92 | dataView.getUint32(offset) === 0x3842494d && |
|
132 | 124 | } |
133 | 125 | offset++ |
134 | 126 | } |
135 | | - |
136 | 127 | console.log('No Iptc data at this offset - could be XMP') |
137 | | - |
138 | 128 | } |
139 | 129 |
|
140 | 130 | // Registers this Iptc parser for the APP13 JPEG meta data segment: |
|
0 commit comments