コード例 #1
0
    def test_exif_string(self):
        exif_header = ParseExifData(struct.pack('4s2B2s', b'Exif', 0, 0, b'MM'))
        self.assertEqual(exif_header.check_exif_string(), 6)

        exif_header = ParseExifData(struct.pack('7s2B2s', b'aaaExif', 0, 0, b'MM'))
        self.assertEqual(exif_header.check_exif_string(), 9)

        exif_header = ParseExifData(struct.pack('3s', b'aaa'))
        self.assertEqual(exif_header.check_exif_string(), -1)
コード例 #2
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)))
コード例 #3
0
    def test_get_tag_info(self):
        exif_header = ParseExifData(struct.pack('>4s2B2s2BL3H2L', b'Exif', 0, 0, b'MM', 0x00, 0x2a, 0x00000008, 0x0001, 0x0002, 0x0003, 0x11223344, 0xaabbccdd))
        exif_header.check_exif_string()
        exif_header.ifd_0th_offset()
        tag_info = exif_header.get_tag_info("0th", 0)
        self.assertEqual(tag_info[0], 0x0002)
        self.assertEqual(tag_info[1], 0x0003)
        self.assertEqual(tag_info[2], 0x11223344)
        self.assertEqual(tag_info[3], 0xaabbccdd)

        exif_header = ParseExifData(struct.pack('<4s2B2s2BL3H2L', b'Exif', 0, 0, b'II', 0x00, 0x2a, 0x00000008, 0x0001, 0x0002, 0x0003, 0x11223344, 0xaabbccdd))
        exif_header.check_exif_string()
        exif_header.ifd_0th_offset()
        tag_info = exif_header.get_tag_info("0th", 0) 
        self.assertEqual(tag_info[0], 0x0002)
        self.assertEqual(tag_info[1], 0x0003)
        self.assertEqual(tag_info[2], 0x11223344)
        self.assertEqual(tag_info[3], 0xaabbccdd)
コード例 #4
0
    def test_tag_number(self):
        exif_header = ParseExifData(struct.pack('>4s2B2s2BLH', b'Exif', 0, 0, b'MM', 0x00, 0x2a, 0x00000008, 0x000b))
        exif_header.check_exif_string()
        exif_header.ifd_0th_offset()
        self.assertEqual(exif_header.tag_number("0th"), 0x000b)

        exif_header = ParseExifData(struct.pack('<4s2B2s2BLH', b'Exif', 0, 0, b'II', 0x00, 0x2a, 0x00000008, 0x000b))
        exif_header.check_exif_string()
        exif_header.ifd_0th_offset()
        self.assertEqual(exif_header.tag_number("0th"), 0x000b)
コード例 #5
0
    def test_ifd_0th_offset(self):
        exif_header = ParseExifData(struct.pack('>4s2B2s2BL', b'Exif', 0, 0, b'MM', 0, 0, 0x12345678))
        exif_header.check_exif_string()
        exif_header.ifd_0th_offset()
        self.assertEqual(exif_header.ifd_offset("0th"), 0x12345678)

        exif_header = ParseExifData(struct.pack('<4s2B2s2BL', b'Exif', 0, 0, b'II', 0, 0, 0x12345678))
        exif_header.check_exif_string()
        exif_header.ifd_0th_offset()
        self.assertEqual(exif_header.ifd_offset("0th"), 0x12345678)
コード例 #6
0
    def test_binary_format(self):
        exif_header = ParseExifData(struct.pack('4s2B2s', b'Exif', 0, 0, b'MM'))
        exif_header.check_exif_string()
        self.assertEqual(exif_header.exif_byte_order(), exif_header.BYTE_ORDER_BIG_ENDIAN)

        exif_header = ParseExifData(struct.pack('4s2B2s', b'Exif', 0, 0, b'II'))
        exif_header.check_exif_string()
        self.assertEqual(exif_header.exif_byte_order(), exif_header.BYTE_ORDER_LITTLE_ENDIAN)

        exif_header = ParseExifData(struct.pack('4s2B2s', b'Exif', 0, 0, b'MI'))
        exif_header.check_exif_string()
        self.assertEqual(exif_header.exif_byte_order(), exif_header.BYTE_ORDER_ERROR)

        exif_header = ParseExifData(struct.pack('4s2B2s', b'Exif', 0, 0, b'IM'))
        exif_header.check_exif_string()
        self.assertEqual(exif_header.exif_byte_order(), exif_header.BYTE_ORDER_ERROR)
コード例 #7
0
 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)
コード例 #8
0
    def test_intr_offset(self):
        exif_header = ParseExifData(struct.pack('>4s2B2s2BL3H3L', b'Exif', 0, 0, b'MM', 0x00, 0x2a, 0x00000008, 0x0001, 0xA005, 0x0003, 0x11223344, 0xaabbccdd, 0x55667788))
        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("intr"), 0xaabbccdd)

        exif_header = ParseExifData(struct.pack('<4s2B2s2BL3H3L', b'Exif', 0, 0, b'II', 0x00, 0x2a, 0x00000008, 0x0001, 0xA005, 0x0003, 0x11223344, 0xaabbccdd, 0x55667788))
        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("intr"), 0xaabbccdd)