update dict instead of ignoring

This commit is contained in:
Alexander 2020-01-19 14:48:01 +03:00
parent f55eb73934
commit dcd0cd9129

View File

@ -101,39 +101,36 @@ def APP(self, marker):
# markers appear in the correct sequence. # markers appear in the correct sequence.
self.icclist.append(s) self.icclist.append(s)
elif marker == 0xFFED and s[:14] == b"Photoshop 3.0\x00": elif marker == 0xFFED and s[:14] == b"Photoshop 3.0\x00":
# Process this marker only if previous were empty # parse the image resource block
if not self.info.get("photoshop"): offset = 14
# parse the image resource block photoshop = self.info.setdefault("photoshop", {})
offset = 14 while s[offset : offset + 4] == b"8BIM":
photoshop = {} try:
while s[offset : offset + 4] == b"8BIM": offset += 4
try: # resource code
offset += 4 code = i16(s, offset)
# resource code offset += 2
code = i16(s, offset) # resource name (usually empty)
offset += 2 name_len = i8(s[offset])
# resource name (usually empty) # name = s[offset+1:offset+1+name_len]
name_len = i8(s[offset]) offset += 1 + name_len
# name = s[offset+1:offset+1+name_len] offset += offset & 1 # align
offset += 1 + name_len # resource data block
offset += offset & 1 # align size = i32(s, offset)
# resource data block offset += 4
size = i32(s, offset) data = s[offset : offset + size]
offset += 4 if code == 0x03ED: # ResolutionInfo
data = s[offset : offset + size] data = {
if code == 0x03ED: # ResolutionInfo "XResolution": i32(data[:4]) / 65536,
data = { "DisplayedUnitsX": i16(data[4:8]),
"XResolution": i32(data[:4]) / 65536, "YResolution": i32(data[8:12]) / 65536,
"DisplayedUnitsX": i16(data[4:8]), "DisplayedUnitsY": i16(data[12:]),
"YResolution": i32(data[8:12]) / 65536, }
"DisplayedUnitsY": i16(data[12:]), photoshop[code] = data
} offset += size
photoshop[code] = data offset += offset & 1 # align
offset += size except struct.error:
offset += offset & 1 # align break # no sufficient data
except struct.error:
break # no sufficient data
self.info["photoshop"] = photoshop
elif marker == 0xFFEE and s[:5] == b"Adobe": elif marker == 0xFFEE and s[:5] == b"Adobe":
self.info["adobe"] = i16(s, 5) self.info["adobe"] = i16(s, 5)