def test_parse_ifd_tag_info(self): exif_header = ParseExifData(struct.pack('<4s2B2s2BL3H3L1H', b'Exif', 0, 0, b'II', 0x00, 0x2a, 0x00000008, 0x0001, 0x8825, 0x0003, 0x11223344, 26, 0xaabbccdd, 0x0)) exif_header.check_exif_string() exif_header.ifd_0th_offset() exif_header.ifd_1st_offset(1) exif_header.get_tag_info("0th", 0) self.assertEqual(exif_header.ifd_offset("gps"), 26) self.assertEqual(exif_header.tag_number("gps"), 0x0) for count in range(exif_header.tag_number("gps")): exif_header.get_tag_info("gps", count) self.assertEqual(exif_header.exif_info_length("gps"), 0)
def display_exif_info(exif_header: ped, read_jpeg_data: bytes, ifd: str) -> None: """Exifの解析結果を表示する""" byte_order = exif_header.exif_byte_order() base_offset = exif_header.exif_base_offset() exif_info_length = exif_header.exif_info_length(ifd) print('-------------------- {:s} --------------------'.format(ifd)) print('{:4s} IFD Offset = 0x{:08x}'.format(ifd, exif_header.ifd_offset(ifd))) print('{:4s} Tag Number = {:d}'.format(ifd, exif_info_length)) for count in range(exif_info_length): exif_info = eti(ifd, byte_order, base_offset, exif_header.exif_info(ifd, count)) print('{:s} : [{:s} len = {:6d}] (0x{:08x}) : {:s}'.format( \ _adjust_string(ADJUST_LEFT, 30, exif_info.change_id_to_string()), \ _adjust_string(ADJUST_LEFT, 10, exif_info.change_format_to_string()), \ exif_info.exif_tag_length(), \ exif_info.exif_tag_value(), \ exif_info.change_tag_value_to_string(read_jpeg_data)))