File: iconify/tools/dump-icns.py
""" ========================================================= Parse and display the structure of an Apple .icns file, whose name is passed in as a command line argument. See iconify.py for creating .icns (and .ico) files, and for links to details on icon format and type codes. ========================================================= """ import sys, struct file = open(sys.argv[1], 'rb') # 8-byte header magic = file.read(4) print('Magic: ', magic) filelen = struct.unpack('>I', file.read(4)) print('File length: ', filelen[0]) # list of length+imagedata while True: type_ = file.read(4) if not type_: break # eof print('-' * 40) print('Icon type: ', type_) imglen = struct.unpack('>I', file.read(4)) print('Image length:', imglen[0]) imgdata = file.read(imglen[0] - 8) # less type+length print('Image data: ') print(imgdata[:100]) # first bytes print('...') print(imgdata[-100:]) # last bytes print('-' * 40) rest = file.read() print('Remainder: ', rest) assert rest == b''