import base64, struct
bmp_data = base64.b64decode('Qk1oAgAAAAAAADYAAAAoAAAAHAAAAAoAAAABABAAAAAAADICAAASCwAAEgsAA' +
'AAAAAAAAAAA/3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3/' +
'/f/9//3//f/9//3//f/9/AHwAfAB8AHwAfAB8AHwAfP9//3//fwB8AHwAfAB8/3//f/9/A' +
'HwAfAB8AHz/f/9//3//f/9//38AfAB8AHwAfAB8AHwAfAB8AHz/f/9//38AfAB8/3//f/9' +
'//3//fwB8AHz/f/9//3//f/9//3//f/9/AHwAfP9//3//f/9/AHwAfP9//3//fwB8AHz/f' +
'/9//3//f/9/AHwAfP9//3//f/9//3//f/9//38AfAB8AHwAfAB8AHwAfP9//3//f/9/AHw' +
'AfP9//3//f/9//38AfAB8/3//f/9//3//f/9//3//fwB8AHwAfAB8AHwAfAB8/3//f/9//' +
'38AfAB8/3//f/9//3//fwB8AHz/f/9//3//f/9//3//f/9/AHwAfP9//3//f/9/AHwAfP9' +
'//3//fwB8AHz/f/9/AHz/f/9/AHwAfP9//38AfP9//3//f/9/AHwAfAB8AHwAfAB8AHwAf' +
'AB8/3//f/9/AHwAfP9//38AfAB8AHwAfAB8AHwAfAB8/3//f/9//38AfAB8AHwAfAB8AHw' +
'AfAB8/3//f/9/AHwAfAB8AHz/fwB8AHwAfAB8AHwAfAB8AHz/f/9//3//f/9//3//f/9//' +
'3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//38AAA==')
def bmp_info(data):
n = struct.unpack('<ccIIIIIIHH', data[:30])
if n[:2] == (b'B',b'M'):
width = n[6]
height = n[7]
color = n[9]
else:
print('this is not a BMP file.')
return None
return {
'width': width,
'height': height,
'color': color
}
# 测试
bi = bmp_info(bmp_data)
assert bi['width'] == 28
assert bi['height'] == 10
assert bi['color'] == 16
print('ok')
# your code goes here
aW1wb3J0IGJhc2U2NCwgc3RydWN0CmJtcF9kYXRhID0gYmFzZTY0LmI2NGRlY29kZSgnUWsxb0FnQUFBQUFBQURZQUFBQW9BQUFBSEFBQUFBb0FBQUFCQUJBQUFBQUFBRElDQUFBU0N3QUFFZ3NBQScgKwogICAgICAgICAgICAgICAgICAgJ0FBQUFBQUFBQUFBLzMvL2YvOS8vMy8vZi85Ly8zLy9mLzkvLzMvL2YvOS8vMy8vZi85Ly8zLy9mLzkvLzMvL2YvOS8vMy8nICsKICAgICAgICAgICAgICAgICAgICcvZi85Ly8zLy9mLzkvLzMvL2YvOS9BSHdBZkFCOEFId0FmQUI4QUh3QWZQOS8vMy8vZndCOEFId0FmQUI4LzMvL2YvOS9BJyArCiAgICAgICAgICAgICAgICAgICAnSHdBZkFCOEFIei9mLzkvLzMvL2YvOS8vMzhBZkFCOEFId0FmQUI4QUh3QWZBQjhBSHovZi85Ly8zOEFmQUI4LzMvL2YvOScgKwogICAgICAgICAgICAgICAgICAgJy8vMy8vZndCOEFIei9mLzkvLzMvL2YvOS8vMy8vZi85L0FId0FmUDkvLzMvL2YvOS9BSHdBZlA5Ly8zLy9md0I4QUh6L2YnICsKICAgICAgICAgICAgICAgICAgICcvOS8vMy8vZi85L0FId0FmUDkvLzMvL2YvOS8vMy8vZi85Ly8zOEFmQUI4QUh3QWZBQjhBSHdBZlA5Ly8zLy9mLzkvQUh3JyArCiAgICAgICAgICAgICAgICAgICAnQWZQOS8vMy8vZi85Ly8zOEFmQUI4LzMvL2YvOS8vMy8vZi85Ly8zLy9md0I4QUh3QWZBQjhBSHdBZkFCOC8zLy9mLzkvLycgKwogICAgICAgICAgICAgICAgICAgJzM4QWZBQjgvMy8vZi85Ly8zLy9md0I4QUh6L2YvOS8vMy8vZi85Ly8zLy9mLzkvQUh3QWZQOS8vMy8vZi85L0FId0FmUDknICsKICAgICAgICAgICAgICAgICAgICcvLzMvL2Z3QjhBSHovZi85L0FIei9mLzkvQUh3QWZQOS8vMzhBZlA5Ly8zLy9mLzkvQUh3QWZBQjhBSHdBZkFCOEFId0FmJyArCiAgICAgICAgICAgICAgICAgICAnQUI4LzMvL2YvOS9BSHdBZlA5Ly8zOEFmQUI4QUh3QWZBQjhBSHdBZkFCOC8zLy9mLzkvLzM4QWZBQjhBSHdBZkFCOEFIdycgKwogICAgICAgICAgICAgICAgICAgJ0FmQUI4LzMvL2YvOS9BSHdBZkFCOEFIei9md0I4QUh3QWZBQjhBSHdBZkFCOEFIei9mLzkvLzMvL2YvOS8vMy8vZi85Ly8nICsKICAgICAgICAgICAgICAgICAgICczLy9mLzkvLzMvL2YvOS8vMy8vZi85Ly8zLy9mLzkvLzMvL2YvOS8vMy8vZi85Ly8zLy9mLzkvLzM4QUFBPT0nKQoKZGVmIGJtcF9pbmZvKGRhdGEpOgogICAgbiA9IHN0cnVjdC51bnBhY2soJzxjY0lJSUlJSUhIJywgZGF0YVs6MzBdKQogICAgaWYgbls6Ml0gPT0gKGInQicsYidNJyk6CiAgICAgICAgd2lkdGggPSBuWzZdCiAgICAgICAgaGVpZ2h0ID0gbls3XQogICAgICAgIGNvbG9yID0gbls5XQogICAgZWxzZToKICAgICAgICBwcmludCgndGhpcyBpcyBub3QgYSBCTVAgZmlsZS4nKQogICAgICAgIHJldHVybiBOb25lCgogICAgcmV0dXJuIHsKICAgICAgICAnd2lkdGgnOiB3aWR0aCwKICAgICAgICAnaGVpZ2h0JzogaGVpZ2h0LAogICAgICAgICdjb2xvcic6IGNvbG9yCiAgICB9CgojIOa1i+ivlQpiaSA9IGJtcF9pbmZvKGJtcF9kYXRhKQphc3NlcnQgYmlbJ3dpZHRoJ10gPT0gMjgKYXNzZXJ0IGJpWydoZWlnaHQnXSA9PSAxMAphc3NlcnQgYmlbJ2NvbG9yJ10gPT0gMTYKcHJpbnQoJ29rJykKIyB5b3VyIGNvZGUgZ29lcyBoZXJl