Glymur 0.13.7__py3-none-any.whl → 0.13.8__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
glymur/lib/tiff.py CHANGED
@@ -17,13 +17,14 @@ from ..config import glymur_config
17
17
  # The error messages queue
18
18
  EQ = queue.Queue()
19
19
 
20
- loader = ctypes.windll.LoadLibrary if os.name == 'nt' else ctypes.CDLL
21
- _LIBTIFF = glymur_config('tiff')
22
- _LIBC = glymur_config('c')
20
+ loader = ctypes.windll.LoadLibrary if os.name == "nt" else ctypes.CDLL
21
+ _LIBTIFF = glymur_config("tiff")
22
+ _LIBC = glymur_config("c")
23
23
 
24
24
 
25
25
  class LibTIFFError(RuntimeError):
26
26
  """Raise this exception if we detect a generic error from libtiff."""
27
+
27
28
  pass
28
29
 
29
30
 
@@ -34,6 +35,7 @@ class Compression(IntEnum):
34
35
  --------
35
36
  Photometric : The color space of the image data.
36
37
  """
38
+
37
39
  NONE = 1
38
40
  CCITTRLE = 2 # CCITT modified Huffman RLE
39
41
  CCITTFAX3 = 3 # CCITT Group 3 fax encoding
@@ -49,21 +51,23 @@ class Compression(IntEnum):
49
51
  CCITTRLEW = 32771 # #1 w/ word alignment
50
52
  PACKBITS = 32773 # Macintosh RLE
51
53
  THUNDERSCAN = 32809 # ThunderScan RLE
52
- PIXARFILM = 32908 # companded 10bit LZW
53
- PIXARLOG = 32909 # companded 11bit ZIP
54
+ PIXARFILM = 32908 # companded 10bit LZW
55
+ PIXARLOG = 32909 # companded 11bit ZIP
54
56
  DEFLATE = 32946 # compression
55
- ADOBE_DEFLATE = 8 # compression, as recognized by Adobe
56
- DCS = 32947 # DCS encoding
57
+ ADOBE_DEFLATE = 8 # compression, as recognized by Adobe
58
+ DCS = 32947 # DCS encoding
57
59
  JBIG = 34661 # JBIG
58
60
  SGILOG = 34676 # Log Luminance RLE
59
61
  SGILOG24 = 34677 # Log 24-bit packed
60
- JP2000 = 34712 # JPEG2000
62
+ JP2000 = 34712 # JPEG2000
61
63
  LZMA = 34925 # LZMA2
62
64
 
63
65
 
64
66
  class InkSet(IntEnum):
65
- """The set of inks used in a separated (PhotometricInterpretation=5) image.
66
67
  """
68
+ The set of inks used in a separated (PhotometricInterpretation=5) image.
69
+ """
70
+
67
71
  CMYK = 1
68
72
  MULTIINK = 2
69
73
 
@@ -77,6 +81,7 @@ class JPEGColorMode(IntEnum):
77
81
  --------
78
82
  Photometric : The color space of the image data.
79
83
  """
84
+
80
85
  RAW = 0
81
86
  RGB = 1
82
87
 
@@ -87,12 +92,14 @@ class PlanarConfig(IntEnum):
87
92
  Writing images with a PlanarConfig value of PlanarConfig.SEPARATE is not
88
93
  currently supported.
89
94
  """
95
+
90
96
  CONTIG = 1 # single image plane
91
97
  SEPARATE = 2 # separate planes of data
92
98
 
93
99
 
94
100
  class Orientation(IntEnum):
95
101
  """The orientation of the image with respect to the rows and columns."""
102
+
96
103
  TOPLEFT = 1 # row 0 top, col 0 lhs */
97
104
  TOPRIGHT = 2 # row 0 top, col 0 rhs */
98
105
  BOTRIGHT = 3 # row 0 bottom, col 0 rhs */
@@ -141,6 +148,7 @@ class Photometric(IntEnum):
141
148
  >>> libtiff.writeEncodedTile(fp, 3, image[th:h, tw:w].copy())
142
149
  >>> libtiff.close(fp)
143
150
  """
151
+
144
152
  MINISWHITE = 0 # value is white
145
153
  MINISBLACK = 1 # value is black
146
154
  RGB = 2 # color model
@@ -158,6 +166,7 @@ class Photometric(IntEnum):
158
166
 
159
167
  class SampleFormat(IntEnum):
160
168
  """Specifies how to interpret each data sample in a pixel."""
169
+
161
170
  UINT = 1
162
171
  INT = 2
163
172
  IEEEFP = 3
@@ -176,8 +185,8 @@ def _handle_error(module, fmt, ap):
176
185
  _LIBC.vsprintf.restype = ctypes.c_int32
177
186
  _LIBC.vsprintf(buffer, fmt, ap)
178
187
 
179
- module = module.decode('utf-8')
180
- error_str = buffer.value.decode('utf-8')
188
+ module = module.decode("utf-8")
189
+ error_str = buffer.value.decode("utf-8")
181
190
 
182
191
  message = f"{module}: {error_str}"
183
192
  EQ.put(message)
@@ -194,8 +203,8 @@ def _handle_warning(module, fmt, ap):
194
203
  _LIBC.vsprintf.restype = ctypes.c_int32
195
204
  _LIBC.vsprintf(buffer, fmt, ap)
196
205
 
197
- module = module.decode('utf-8')
198
- warning_str = buffer.value.decode('utf-8')
206
+ module = module.decode("utf-8")
207
+ warning_str = buffer.value.decode("utf-8")
199
208
 
200
209
  message = f"{module}: {warning_str}"
201
210
  warnings.warn(message)
@@ -206,7 +215,7 @@ _WFUNCTYPE = ctypes.CFUNCTYPE(
206
215
  ctypes.c_void_p, # return type of warning handler, void *
207
216
  ctypes.c_char_p, # module
208
217
  ctypes.c_char_p, # fmt
209
- ctypes.c_void_p # va_list
218
+ ctypes.c_void_p, # va_list
210
219
  )
211
220
 
212
221
  _ERROR_HANDLER = _WFUNCTYPE(_handle_error)
@@ -257,8 +266,13 @@ def computeTile(fp, x, y, z, sample):
257
266
  """Corresponds to TIFFComputeTile"""
258
267
  err_handler, warn_handler = _set_error_warning_handlers()
259
268
 
260
- ARGTYPES = [ctypes.c_void_p, ctypes.c_uint32, ctypes.c_uint32,
261
- ctypes.c_uint32, ctypes.c_uint16]
269
+ ARGTYPES = [
270
+ ctypes.c_void_p,
271
+ ctypes.c_uint32,
272
+ ctypes.c_uint32,
273
+ ctypes.c_uint32,
274
+ ctypes.c_uint16,
275
+ ]
262
276
  _LIBTIFF.TIFFComputeTile.argtypes = ARGTYPES
263
277
  _LIBTIFF.TIFFComputeTile.restype = ctypes.c_uint32
264
278
  tilenum = _LIBTIFF.TIFFComputeTile(fp, x, y, z, sample)
@@ -322,7 +336,10 @@ def readEncodedStrip(fp, stripnum, strip, size=-1):
322
336
  size = strip.nbytes
323
337
 
324
338
  ARGTYPES = [
325
- ctypes.c_void_p, ctypes.c_uint32, ctypes.c_void_p, ctypes.c_int32
339
+ ctypes.c_void_p,
340
+ ctypes.c_uint32,
341
+ ctypes.c_void_p,
342
+ ctypes.c_int32
326
343
  ]
327
344
  _LIBTIFF.TIFFReadEncodedStrip.argtypes = ARGTYPES
328
345
  _LIBTIFF.TIFFReadEncodedStrip.restype = check_error
@@ -343,12 +360,18 @@ def readEncodedTile(fp, tilenum, tile, size=-1):
343
360
  size = tile.nbytes
344
361
 
345
362
  ARGTYPES = [
346
- ctypes.c_void_p, ctypes.c_uint32, ctypes.c_void_p, ctypes.c_int32
363
+ ctypes.c_void_p,
364
+ ctypes.c_uint32,
365
+ ctypes.c_void_p,
366
+ ctypes.c_int32
347
367
  ]
348
368
  _LIBTIFF.TIFFReadEncodedTile.argtypes = ARGTYPES
349
369
  _LIBTIFF.TIFFReadEncodedTile.restype = check_error
350
370
  _LIBTIFF.TIFFReadEncodedTile(
351
- fp, tilenum, tile.ctypes.data_as(ctypes.c_void_p), -1
371
+ fp,
372
+ tilenum,
373
+ tile.ctypes.data_as(ctypes.c_void_p),
374
+ -1
352
375
  )
353
376
 
354
377
  _reset_error_warning_handlers(err_handler, warn_handler)
@@ -360,14 +383,10 @@ def readRGBAStrip(fp, row, strip):
360
383
  """Corresponds to TIFFReadRGBAStrip"""
361
384
  err_handler, warn_handler = _set_error_warning_handlers()
362
385
 
363
- ARGTYPES = [
364
- ctypes.c_void_p, ctypes.c_uint32, ctypes.c_void_p
365
- ]
386
+ ARGTYPES = [ctypes.c_void_p, ctypes.c_uint32, ctypes.c_void_p]
366
387
  _LIBTIFF.TIFFReadRGBAStrip.argtypes = ARGTYPES
367
388
  _LIBTIFF.TIFFReadRGBAStrip.restype = check_error
368
- _LIBTIFF.TIFFReadRGBAStrip(
369
- fp, row, strip.ctypes.data_as(ctypes.c_void_p)
370
- )
389
+ _LIBTIFF.TIFFReadRGBAStrip(fp, row, strip.ctypes.data_as(ctypes.c_void_p))
371
390
 
372
391
  _reset_error_warning_handlers(err_handler, warn_handler)
373
392
 
@@ -379,21 +398,26 @@ def readRGBATile(fp, x, y, tile):
379
398
  err_handler, warn_handler = _set_error_warning_handlers()
380
399
 
381
400
  ARGTYPES = [
382
- ctypes.c_void_p, ctypes.c_uint32, ctypes.c_uint32, ctypes.c_void_p
401
+ ctypes.c_void_p,
402
+ ctypes.c_uint32,
403
+ ctypes.c_uint32,
404
+ ctypes.c_void_p
383
405
  ]
384
406
  _LIBTIFF.TIFFReadRGBATile.argtypes = ARGTYPES
385
407
  _LIBTIFF.TIFFReadRGBATile.restype = check_error
386
- _LIBTIFF.TIFFReadRGBATile(
387
- fp, x, y, tile.ctypes.data_as(ctypes.c_void_p)
388
- )
408
+ _LIBTIFF.TIFFReadRGBATile(fp, x, y, tile.ctypes.data_as(ctypes.c_void_p))
389
409
 
390
410
  _reset_error_warning_handlers(err_handler, warn_handler)
391
411
 
392
412
  return tile
393
413
 
394
414
 
395
- def readRGBAImageOriented(fp, width=None, height=None,
396
- orientation=Orientation.TOPLEFT):
415
+ def readRGBAImageOriented(
416
+ fp,
417
+ width=None,
418
+ height=None,
419
+ orientation=Orientation.TOPLEFT
420
+ ):
397
421
  """Read an image as if it were RGBA.
398
422
 
399
423
  This function corresponds to the TIFFReadRGBAImageOriented function in the
@@ -415,22 +439,32 @@ def readRGBAImageOriented(fp, width=None, height=None,
415
439
  err_handler, warn_handler = _set_error_warning_handlers()
416
440
 
417
441
  ARGTYPES = [
418
- ctypes.c_void_p, ctypes.c_uint32, ctypes.c_uint32,
419
- ctypes.POINTER(ctypes.c_uint32), ctypes.c_int32, ctypes.c_int32
442
+ ctypes.c_void_p,
443
+ ctypes.c_uint32,
444
+ ctypes.c_uint32,
445
+ ctypes.POINTER(ctypes.c_uint32),
446
+ ctypes.c_int32,
447
+ ctypes.c_int32,
420
448
  ]
421
449
 
422
450
  _LIBTIFF.TIFFReadRGBAImageOriented.argtypes = ARGTYPES
423
451
  _LIBTIFF.TIFFReadRGBAImageOriented.restype = check_error
424
452
 
425
453
  if width is None:
426
- width = getFieldDefaulted(fp, 'ImageWidth')
454
+ width = getFieldDefaulted(fp, "ImageWidth")
427
455
  if height is None:
428
- height = getFieldDefaulted(fp, 'ImageLength')
456
+ height = getFieldDefaulted(fp, "ImageLength")
429
457
 
430
458
  img = np.zeros((height, width, 4), dtype=np.uint8)
431
459
  raster = img.ctypes.data_as(ctypes.POINTER(ctypes.c_uint32))
432
- _LIBTIFF.TIFFReadRGBAImageOriented(fp, width, height, raster, orientation,
433
- 0)
460
+ _LIBTIFF.TIFFReadRGBAImageOriented(
461
+ fp,
462
+ width,
463
+ height,
464
+ raster,
465
+ orientation,
466
+ 0
467
+ )
434
468
 
435
469
  _reset_error_warning_handlers(err_handler, warn_handler)
436
470
 
@@ -442,7 +476,10 @@ def writeEncodedStrip(fp, stripnum, stripdata, size=-1):
442
476
  err_handler, warn_handler = _set_error_warning_handlers()
443
477
 
444
478
  ARGTYPES = [
445
- ctypes.c_void_p, ctypes.c_uint32, ctypes.c_void_p, ctypes.c_uint32
479
+ ctypes.c_void_p,
480
+ ctypes.c_uint32,
481
+ ctypes.c_void_p,
482
+ ctypes.c_uint32
446
483
  ]
447
484
  _LIBTIFF.TIFFWriteEncodedStrip.argtypes = ARGTYPES
448
485
  _LIBTIFF.TIFFWriteEncodedStrip.restype = check_error
@@ -461,7 +498,10 @@ def writeEncodedTile(fp, tilenum, tiledata, size=-1):
461
498
  err_handler, warn_handler = _set_error_warning_handlers()
462
499
 
463
500
  ARGTYPES = [
464
- ctypes.c_void_p, ctypes.c_uint32, ctypes.c_void_p, ctypes.c_uint32
501
+ ctypes.c_void_p,
502
+ ctypes.c_uint32,
503
+ ctypes.c_void_p,
504
+ ctypes.c_uint32
465
505
  ]
466
506
  _LIBTIFF.TIFFWriteEncodedTile.argtypes = ARGTYPES
467
507
  _LIBTIFF.TIFFWriteEncodedTile.restype = check_error
@@ -499,11 +539,11 @@ def getFieldDefaulted(fp, tag):
499
539
 
500
540
  ARGTYPES = [ctypes.c_void_p, ctypes.c_int32]
501
541
 
502
- tag_num = TAGS[tag]['number']
542
+ tag_num = TAGS[tag]["number"]
503
543
 
504
544
  # Append the proper return type for the tag.
505
- tag_type = TAGS[tag]['type']
506
- ARGTYPES.append(ctypes.POINTER(TAGS[tag]['type']))
545
+ tag_type = TAGS[tag]["type"]
546
+ ARGTYPES.append(ctypes.POINTER(TAGS[tag]["type"]))
507
547
  _LIBTIFF.TIFFGetFieldDefaulted.argtypes = ARGTYPES
508
548
 
509
549
  _LIBTIFF.TIFFGetFieldDefaulted.restype = check_error
@@ -523,9 +563,9 @@ def getVersion():
523
563
  _LIBTIFF.TIFFGetVersion.restype = ctypes.c_char_p
524
564
  except AttributeError:
525
565
  # libtiff not installed
526
- return '0.0.0'
566
+ return "0.0.0"
527
567
 
528
- v = _LIBTIFF.TIFFGetVersion().decode('utf-8')
568
+ v = _LIBTIFF.TIFFGetVersion().decode("utf-8")
529
569
 
530
570
  # v would be something like
531
571
  #
@@ -534,11 +574,11 @@ def getVersion():
534
574
  # Copyright (c) 1991-1996 Silicon Graphics, Inc.
535
575
  #
536
576
  # All we want is the '4.3.0'
537
- m = re.search(r'(?P<version>\d+\.\d+\.\d+)', v)
538
- return m.group('version')
577
+ m = re.search(r"(?P<version>\d+\.\d+\.\d+)", v)
578
+ return m.group("version")
539
579
 
540
580
 
541
- def open(filename, mode='r'):
581
+ def open(filename, mode="r"):
542
582
  """Corresponds to TIFFOpen
543
583
 
544
584
  Parameters
@@ -581,8 +621,8 @@ def setField(fp, tag, *value):
581
621
  ARGTYPES = [ctypes.c_void_p, ctypes.c_int32]
582
622
 
583
623
  # Append the proper return type for the tag.
584
- tag_num = TAGS[tag]['number']
585
- tag_type = TAGS[tag]['type']
624
+ tag_num = TAGS[tag]["number"]
625
+ tag_type = TAGS[tag]["type"]
586
626
 
587
627
  try:
588
628
  for ttype in tag_type:
@@ -620,1293 +660,1248 @@ def check_error(status):
620
660
  for error status in each wrapping function and an exception will always be
621
661
  appropriately raised.
622
662
  """
623
- msg = ''
663
+ msg = ""
624
664
  while not EQ.empty():
625
665
  msg = EQ.get()
626
666
  raise LibTIFFError(msg)
627
667
 
628
668
  if status == 0:
629
- raise RuntimeError('failed')
669
+ raise RuntimeError("failed")
630
670
 
631
671
 
632
672
  TAGS = {
633
- 'ProcessingSoftware': {
634
- 'number': 11,
635
- 'type': ctypes.c_char_p,
636
- },
637
- 'SubFileType': {
638
- 'number': 254,
639
- 'type': ctypes.c_int16,
640
- },
641
- 'OSubFileType': {
642
- 'number': 255,
643
- 'type': ctypes.c_int16,
644
- },
645
- 'ImageWidth': {
646
- 'number': 256,
647
- 'type': ctypes.c_int32,
648
- },
649
- 'ImageLength': {
650
- 'number': 257,
651
- 'type': ctypes.c_int32,
652
- },
653
- 'BitsPerSample': {
654
- 'number': 258,
655
- 'type': ctypes.c_int16,
656
- },
657
- 'Compression': {
658
- 'number': 259,
659
- 'type': ctypes.c_int16,
660
- },
661
- 'Photometric': {
662
- 'number': 262,
663
- 'type': ctypes.c_int16,
664
- },
665
- 'Threshholding': {
666
- 'number': 263,
667
- 'type': ctypes.c_int16,
668
- },
669
- 'CellWidth': {
670
- 'number': 264,
671
- 'type': ctypes.c_int16,
672
- },
673
- 'CellLength': {
674
- 'number': 265,
675
- 'type': ctypes.c_int16,
676
- },
677
- 'FillOrder': {
678
- 'number': 266,
679
- 'type': ctypes.c_int16,
680
- },
681
- 'DocumentName': {
682
- 'number': 269,
683
- 'type': ctypes.c_char_p,
684
- },
685
- 'ImageDescription': {
686
- 'number': 270,
687
- 'type': ctypes.c_char_p,
688
- },
689
- 'Make': {
690
- 'number': 271,
691
- 'type': ctypes.c_char_p,
692
- },
693
- 'Model': {
694
- 'number': 272,
695
- 'type': ctypes.c_char_p,
696
- },
697
- 'StripOffsets': {
698
- 'number': 273,
699
- 'type': (ctypes.c_int32, ctypes.c_int64),
700
- },
701
- 'Orientation': {
702
- 'number': 274,
703
- 'type': ctypes.c_int16,
704
- },
705
- 'SamplesPerPixel': {
706
- 'number': 277,
707
- 'type': ctypes.c_int16,
708
- },
709
- 'RowsPerStrip': {
710
- 'number': 278,
711
- 'type': ctypes.c_int16,
712
- },
713
- 'StripByteCounts': {
714
- 'number': 279,
715
- 'type': None,
716
- },
717
- 'MinSampleValue': {
718
- 'number': 280,
719
- 'type': ctypes.c_int16,
720
- },
721
- 'MaxSampleValue': {
722
- 'number': 281,
723
- 'type': ctypes.c_int16,
724
- },
725
- 'XResolution': {
726
- 'number': 282,
727
- 'type': ctypes.c_double,
728
- },
729
- 'YResolution': {
730
- 'number': 283,
731
- 'type': ctypes.c_double,
732
- },
733
- 'PlanarConfig': {
734
- 'number': 284,
735
- 'type': ctypes.c_int16,
736
- },
737
- 'PageName': {
738
- 'number': 285,
739
- 'type': ctypes.c_char_p,
740
- },
741
- 'XPosition': {
742
- 'number': 286,
743
- 'type': ctypes.c_double,
744
- },
745
- 'YPosition': {
746
- 'number': 287,
747
- 'type': ctypes.c_double,
748
- },
749
- 'FreeOffsets': {
750
- 'number': 288,
751
- 'type': ctypes.c_int32,
752
- },
753
- 'FreeByteCounts': {
754
- 'number': 289,
755
- 'type': ctypes.c_int32,
756
- },
757
- 'GrayResponseUnit': {
758
- 'number': 290,
759
- 'type': ctypes.c_int16,
760
- },
761
- 'GrayResponseCurve': {
762
- 'number': 291,
763
- 'type': None,
764
- },
765
- 'T4Options': {
766
- 'number': 292,
767
- 'type': None,
768
- },
769
- 'T6Options': {
770
- 'number': 293,
771
- 'type': None,
772
- },
773
- 'ResolutionUnit': {
774
- 'number': 296,
775
- 'type': ctypes.c_int16,
776
- },
777
- 'PageNumber': {
778
- 'number': 297,
779
- 'type': (ctypes.c_int16, ctypes.c_uint16),
780
- },
781
- 'TransferFunction': {
782
- 'number': 301,
783
- 'type': None,
784
- },
785
- 'Software': {
786
- 'number': 305,
787
- 'type': ctypes.c_char_p,
788
- },
789
- 'Datetime': {
790
- 'number': 306,
791
- 'type': ctypes.c_char_p,
792
- },
793
- 'Artist': {
794
- 'number': 315,
795
- 'type': ctypes.c_char_p,
796
- },
797
- 'HostComputer': {
798
- 'number': 316,
799
- 'type': ctypes.c_char_p,
800
- },
801
- 'Predictor': {
802
- 'number': 317,
803
- 'type': ctypes.c_int16,
804
- },
805
- 'WhitePoint': {
806
- 'number': 318,
807
- 'type': ctypes.c_double,
808
- },
809
- 'PrimaryChromaticities': {
810
- 'number': 319,
811
- 'type': None,
812
- },
813
- 'ColorMap': {
814
- 'number': 320,
815
- 'type': (ctypes.c_int16, ctypes.c_uint16),
816
- },
817
- 'HalfToneHints': {
818
- 'number': 321,
819
- 'type': ctypes.c_int16,
820
- },
821
- 'TileWidth': {
822
- 'number': 322,
823
- 'type': ctypes.c_int32,
824
- },
825
- 'TileLength': {
826
- 'number': 323,
827
- 'type': ctypes.c_int32,
828
- },
829
- 'TileOffsets': {
830
- 'number': 324,
831
- 'type': None,
832
- },
833
- 'TileByteCounts': {
834
- 'number': 325,
835
- 'type': None,
836
- },
837
- 'BadFaxLines': {
838
- 'number': 326,
839
- 'type': None,
840
- },
841
- 'CleanFaxData': {
842
- 'number': 327,
843
- 'type': None,
844
- },
845
- 'ConsecutiveBadFaxLines': {
846
- 'number': 328,
847
- 'type': None,
848
- },
849
- 'SubIFDs': {
850
- 'number': 330,
851
- 'type': None,
852
- },
853
- 'InkSet': {
854
- 'number': 332,
855
- 'type': ctypes.c_uint16,
856
- },
857
- 'InkNames': {
858
- 'number': 333,
859
- 'type': ctypes.c_char_p,
673
+ "ProcessingSoftware": {
674
+ "number": 11,
675
+ "type": ctypes.c_char_p,
860
676
  },
861
- 'NumberOfInks': {
862
- 'number': 334,
863
- 'type': ctypes.c_uint16,
677
+ "SubFileType": {
678
+ "number": 254,
679
+ "type": ctypes.c_int16,
864
680
  },
865
- 'DotRange': {
866
- 'number': 336,
867
- 'type': None,
681
+ "OSubFileType": {
682
+ "number": 255,
683
+ "type": ctypes.c_int16,
868
684
  },
869
- 'TargetPrinter': {
870
- 'number': 337,
871
- 'type': ctypes.c_uint16,
685
+ "ImageWidth": {
686
+ "number": 256,
687
+ "type": ctypes.c_int32,
872
688
  },
873
- 'ExtraSamples': {
874
- 'number': 338,
875
- 'type': ctypes.c_uint16,
689
+ "ImageLength": {
690
+ "number": 257,
691
+ "type": ctypes.c_int32,
876
692
  },
877
- 'SampleFormat': {
878
- 'number': 339,
879
- 'type': ctypes.c_uint16,
693
+ "BitsPerSample": {
694
+ "number": 258,
695
+ "type": ctypes.c_int16,
880
696
  },
881
- 'SMinSampleValue': {
882
- 'number': 340,
883
- 'type': ctypes.c_double,
697
+ "Compression": {
698
+ "number": 259,
699
+ "type": ctypes.c_int16,
884
700
  },
885
- 'SMaxSampleValue': {
886
- 'number': 341,
887
- 'type': ctypes.c_double,
701
+ "Photometric": {
702
+ "number": 262,
703
+ "type": ctypes.c_int16,
888
704
  },
889
- 'TransferRange': {
890
- 'number': 342,
891
- 'type': None,
705
+ "Threshholding": {
706
+ "number": 263,
707
+ "type": ctypes.c_int16,
892
708
  },
893
- 'ClipPath': {
894
- 'number': 343,
895
- 'type': None,
709
+ "CellWidth": {
710
+ "number": 264,
711
+ "type": ctypes.c_int16,
896
712
  },
897
- 'XClipPathUnits': {
898
- 'number': 344,
899
- 'type': None,
713
+ "CellLength": {
714
+ "number": 265,
715
+ "type": ctypes.c_int16,
900
716
  },
901
- 'YClipPathUnits': {
902
- 'number': 345,
903
- 'type': None,
717
+ "FillOrder": {
718
+ "number": 266,
719
+ "type": ctypes.c_int16,
904
720
  },
905
- 'Indexed': {
906
- 'number': 346,
907
- 'type': None,
721
+ "DocumentName": {
722
+ "number": 269,
723
+ "type": ctypes.c_char_p,
908
724
  },
909
- 'JPEGTables': {
910
- 'number': 347,
911
- 'type': None,
725
+ "ImageDescription": {
726
+ "number": 270,
727
+ "type": ctypes.c_char_p,
912
728
  },
913
- 'OPIProxy': {
914
- 'number': 351,
915
- 'type': None,
729
+ "Make": {
730
+ "number": 271,
731
+ "type": ctypes.c_char_p,
916
732
  },
917
- 'GlobalParametersIFD': {
918
- 'number': 400,
919
- 'type': None,
733
+ "Model": {
734
+ "number": 272,
735
+ "type": ctypes.c_char_p,
920
736
  },
921
- 'ProfileType': {
922
- 'number': 401,
923
- 'type': None,
737
+ "StripOffsets": {
738
+ "number": 273,
739
+ "type": (ctypes.c_int32, ctypes.c_int64),
924
740
  },
925
- 'FaxProfile': {
926
- 'number': 402,
927
- 'type': ctypes.c_uint8,
741
+ "Orientation": {
742
+ "number": 274,
743
+ "type": ctypes.c_int16,
928
744
  },
929
- 'CodingMethods': {
930
- 'number': 403,
931
- 'type': None,
745
+ "SamplesPerPixel": {
746
+ "number": 277,
747
+ "type": ctypes.c_int16,
932
748
  },
933
- 'VersionYear': {
934
- 'number': 404,
935
- 'type': None,
749
+ "RowsPerStrip": {
750
+ "number": 278,
751
+ "type": ctypes.c_int16,
936
752
  },
937
- 'ModeNumber': {
938
- 'number': 405,
939
- 'type': None,
753
+ "StripByteCounts": {
754
+ "number": 279,
755
+ "type": None,
940
756
  },
941
- 'Decode': {
942
- 'number': 433,
943
- 'type': None,
757
+ "MinSampleValue": {
758
+ "number": 280,
759
+ "type": ctypes.c_int16,
944
760
  },
945
- 'DefaultImageColor': {
946
- 'number': 434,
947
- 'type': None,
761
+ "MaxSampleValue": {
762
+ "number": 281,
763
+ "type": ctypes.c_int16,
948
764
  },
949
- 'JPEGProc': {
950
- 'number': 512,
951
- 'type': None,
765
+ "XResolution": {
766
+ "number": 282,
767
+ "type": ctypes.c_double,
952
768
  },
953
- 'JPEGInterchangeFormat': {
954
- 'number': 513,
955
- 'type': None,
769
+ "YResolution": {
770
+ "number": 283,
771
+ "type": ctypes.c_double,
956
772
  },
957
- 'JPEGInterchangeFormatLength': {
958
- 'number': 514,
959
- 'type': None,
773
+ "PlanarConfig": {
774
+ "number": 284,
775
+ "type": ctypes.c_int16,
960
776
  },
961
- 'JPEGRestartInterval': {
962
- 'number': 515,
963
- 'type': None,
777
+ "PageName": {
778
+ "number": 285,
779
+ "type": ctypes.c_char_p,
964
780
  },
965
- 'JPEGLosslessPredictors': {
966
- 'number': 517,
967
- 'type': None,
781
+ "XPosition": {
782
+ "number": 286,
783
+ "type": ctypes.c_double,
968
784
  },
969
- 'JPEGPointTransforms': {
970
- 'number': 518,
971
- 'type': None,
785
+ "YPosition": {
786
+ "number": 287,
787
+ "type": ctypes.c_double,
972
788
  },
973
- 'JPEGQTables': {
974
- 'number': 519,
975
- 'type': None,
789
+ "FreeOffsets": {
790
+ "number": 288,
791
+ "type": ctypes.c_int32,
976
792
  },
977
- 'JPEGDCTables': {
978
- 'number': 520,
979
- 'type': None,
793
+ "FreeByteCounts": {
794
+ "number": 289,
795
+ "type": ctypes.c_int32,
980
796
  },
981
- 'JPEGACTables': {
982
- 'number': 521,
983
- 'type': None,
797
+ "GrayResponseUnit": {
798
+ "number": 290,
799
+ "type": ctypes.c_int16,
984
800
  },
985
- 'YCbCrCoefficients': {
986
- 'number': 529,
987
- 'type': (ctypes.c_float, ctypes.c_float, ctypes.c_float),
801
+ "GrayResponseCurve": {
802
+ "number": 291,
803
+ "type": None,
988
804
  },
989
- 'YCbCrSubsampling': {
990
- 'number': 530,
991
- 'type': (ctypes.c_uint16, ctypes.c_uint16),
805
+ "T4Options": {
806
+ "number": 292,
807
+ "type": None,
992
808
  },
993
- 'YCbCrPositioning': {
994
- 'number': 531,
995
- 'type': ctypes.c_uint16,
809
+ "T6Options": {
810
+ "number": 293,
811
+ "type": None,
996
812
  },
997
- 'ReferenceBlackWhite': {
998
- 'number': 532,
999
- 'type': (ctypes.c_float, ctypes.c_float, ctypes.c_float,
1000
- ctypes.c_float, ctypes.c_float, ctypes.c_float),
813
+ "ResolutionUnit": {
814
+ "number": 296,
815
+ "type": ctypes.c_int16,
1001
816
  },
1002
- 'StripRowCounts': {
1003
- 'number': 559,
1004
- 'type': None,
817
+ "PageNumber": {
818
+ "number": 297,
819
+ "type": (ctypes.c_int16, ctypes.c_uint16),
1005
820
  },
1006
- 'XMLPacket': {
1007
- 'number': 700,
1008
- 'type': ctypes.c_uint8,
821
+ "TransferFunction": {
822
+ "number": 301,
823
+ "type": None,
1009
824
  },
1010
- 'ImageID': {
1011
- 'number': 32781,
1012
- 'type': None,
825
+ "Software": {
826
+ "number": 305,
827
+ "type": ctypes.c_char_p,
1013
828
  },
1014
- 'Rating': {
1015
- 'number': 18246,
1016
- 'type': ctypes.c_uint16,
829
+ "Datetime": {
830
+ "number": 306,
831
+ "type": ctypes.c_char_p,
1017
832
  },
1018
- 'RatingPercent': {
1019
- 'number': 18249,
1020
- 'type': ctypes.c_uint16,
833
+ "Artist": {
834
+ "number": 315,
835
+ "type": ctypes.c_char_p,
1021
836
  },
1022
- 'Datatype': {
1023
- 'number': 32996,
1024
- 'type': None,
837
+ "HostComputer": {
838
+ "number": 316,
839
+ "type": ctypes.c_char_p,
1025
840
  },
1026
- 'WANGAnnotation': {
1027
- 'number': 32932,
1028
- 'type': None,
841
+ "Predictor": {
842
+ "number": 317,
843
+ "type": ctypes.c_int16,
1029
844
  },
1030
- 'ImageDepth': {
1031
- 'number': 32997,
1032
- 'type': None,
845
+ "WhitePoint": {
846
+ "number": 318,
847
+ "type": ctypes.c_double,
1033
848
  },
1034
- 'TileDepth': {
1035
- 'number': 32998,
1036
- 'type': None,
849
+ "PrimaryChromaticities": {
850
+ "number": 319,
851
+ "type": None,
1037
852
  },
1038
- 'CFARepeatPatternDim': {
1039
- 'number': 33421,
1040
- 'type': None,
853
+ "ColorMap": {
854
+ "number": 320,
855
+ "type": (ctypes.c_int16, ctypes.c_uint16),
1041
856
  },
1042
- 'CFAPattern': {
1043
- 'number': 33422,
1044
- 'type': None,
857
+ "HalfToneHints": {
858
+ "number": 321,
859
+ "type": ctypes.c_int16,
1045
860
  },
1046
- 'BatteryLevel': {
1047
- 'number': 33423,
1048
- 'type': None,
861
+ "TileWidth": {
862
+ "number": 322,
863
+ "type": ctypes.c_int32,
1049
864
  },
1050
- 'Copyright': {
1051
- 'number': 33432,
1052
- 'type': ctypes.c_char_p,
865
+ "TileLength": {
866
+ "number": 323,
867
+ "type": ctypes.c_int32,
1053
868
  },
1054
- 'ExposureTime': {
1055
- 'number': 33434,
1056
- 'type': ctypes.c_double,
869
+ "TileOffsets": {
870
+ "number": 324,
871
+ "type": None,
1057
872
  },
1058
- 'FNumber': {
1059
- 'number': 33437,
1060
- 'type': ctypes.c_double,
873
+ "TileByteCounts": {
874
+ "number": 325,
875
+ "type": None,
1061
876
  },
1062
- 'MDFile': {
1063
- 'number': 33445,
1064
- 'type': None,
877
+ "BadFaxLines": {
878
+ "number": 326,
879
+ "type": None,
1065
880
  },
1066
- 'MDScalePixel': {
1067
- 'number': 33446,
1068
- 'type': None,
881
+ "CleanFaxData": {
882
+ "number": 327,
883
+ "type": None,
1069
884
  },
1070
- 'MDColorTable': {
1071
- 'number': 33447,
1072
- 'type': None,
885
+ "ConsecutiveBadFaxLines": {
886
+ "number": 328,
887
+ "type": None,
1073
888
  },
1074
- 'MDLabName': {
1075
- 'number': 33448,
1076
- 'type': None,
889
+ "SubIFDs": {
890
+ "number": 330,
891
+ "type": None,
1077
892
  },
1078
- 'MDSampleInfo': {
1079
- 'number': 33449,
1080
- 'type': None,
893
+ "InkSet": {
894
+ "number": 332,
895
+ "type": ctypes.c_uint16,
1081
896
  },
1082
- 'MdPrepDate': {
1083
- 'number': 33450,
1084
- 'type': None,
897
+ "InkNames": {
898
+ "number": 333,
899
+ "type": ctypes.c_char_p,
1085
900
  },
1086
- 'MDPrepTime': {
1087
- 'number': 33451,
1088
- 'type': None,
901
+ "NumberOfInks": {
902
+ "number": 334,
903
+ "type": ctypes.c_uint16,
1089
904
  },
1090
- 'MDFileUnits': {
1091
- 'number': 33452,
1092
- 'type': None,
905
+ "DotRange": {
906
+ "number": 336,
907
+ "type": None,
1093
908
  },
1094
- 'ModelPixelScale': {
1095
- 'number': 33550,
1096
- 'type': None,
909
+ "TargetPrinter": {
910
+ "number": 337,
911
+ "type": ctypes.c_uint16,
1097
912
  },
1098
- 'IPTC': {
1099
- 'number': 33723,
1100
- 'type': None,
913
+ "ExtraSamples": {
914
+ "number": 338,
915
+ "type": ctypes.c_uint16,
1101
916
  },
1102
- 'INGRPacketData': {
1103
- 'number': 33918,
1104
- 'type': None,
917
+ "SampleFormat": {
918
+ "number": 339,
919
+ "type": ctypes.c_uint16,
1105
920
  },
1106
- 'INGRFlagRegisters': {
1107
- 'number': 33919,
1108
- 'type': None,
921
+ "SMinSampleValue": {
922
+ "number": 340,
923
+ "type": ctypes.c_double,
1109
924
  },
1110
- 'IRASbTransformationMatrix': {
1111
- 'number': 33920,
1112
- 'type': None,
925
+ "SMaxSampleValue": {
926
+ "number": 341,
927
+ "type": ctypes.c_double,
1113
928
  },
1114
- 'ModelTiePoint': {
1115
- 'number': 33922,
1116
- 'type': None,
929
+ "TransferRange": {
930
+ "number": 342,
931
+ "type": None,
1117
932
  },
1118
- 'ModelTransformation': {
1119
- 'number': 34264,
1120
- 'type': None,
933
+ "ClipPath": {
934
+ "number": 343,
935
+ "type": None,
1121
936
  },
1122
- 'Photoshop': {
1123
- 'number': 34377,
1124
- 'type': None,
937
+ "XClipPathUnits": {
938
+ "number": 344,
939
+ "type": None,
1125
940
  },
1126
- 'ExifTag': {
1127
- 'number': 34665,
1128
- 'type': ctypes.c_int32,
941
+ "YClipPathUnits": {
942
+ "number": 345,
943
+ "type": None,
944
+ },
945
+ "Indexed": {
946
+ "number": 346,
947
+ "type": None,
948
+ },
949
+ "JPEGTables": {
950
+ "number": 347,
951
+ "type": None,
952
+ },
953
+ "OPIProxy": {
954
+ "number": 351,
955
+ "type": None,
956
+ },
957
+ "GlobalParametersIFD": {
958
+ "number": 400,
959
+ "type": None,
960
+ },
961
+ "ProfileType": {
962
+ "number": 401,
963
+ "type": None,
964
+ },
965
+ "FaxProfile": {
966
+ "number": 402,
967
+ "type": ctypes.c_uint8,
968
+ },
969
+ "CodingMethods": {
970
+ "number": 403,
971
+ "type": None,
972
+ },
973
+ "VersionYear": {
974
+ "number": 404,
975
+ "type": None,
976
+ },
977
+ "ModeNumber": {
978
+ "number": 405,
979
+ "type": None,
980
+ },
981
+ "Decode": {
982
+ "number": 433,
983
+ "type": None,
984
+ },
985
+ "DefaultImageColor": {
986
+ "number": 434,
987
+ "type": None,
988
+ },
989
+ "JPEGProc": {
990
+ "number": 512,
991
+ "type": None,
992
+ },
993
+ "JPEGInterchangeFormat": {
994
+ "number": 513,
995
+ "type": None,
996
+ },
997
+ "JPEGInterchangeFormatLength": {
998
+ "number": 514,
999
+ "type": None,
1000
+ },
1001
+ "JPEGRestartInterval": {
1002
+ "number": 515,
1003
+ "type": None,
1004
+ },
1005
+ "JPEGLosslessPredictors": {
1006
+ "number": 517,
1007
+ "type": None,
1008
+ },
1009
+ "JPEGPointTransforms": {
1010
+ "number": 518,
1011
+ "type": None,
1012
+ },
1013
+ "JPEGQTables": {
1014
+ "number": 519,
1015
+ "type": None,
1016
+ },
1017
+ "JPEGDCTables": {
1018
+ "number": 520,
1019
+ "type": None,
1020
+ },
1021
+ "JPEGACTables": {
1022
+ "number": 521,
1023
+ "type": None,
1024
+ },
1025
+ "YCbCrCoefficients": {
1026
+ "number": 529,
1027
+ "type": (ctypes.c_float, ctypes.c_float, ctypes.c_float),
1028
+ },
1029
+ "YCbCrSubsampling": {
1030
+ "number": 530,
1031
+ "type": (ctypes.c_uint16, ctypes.c_uint16),
1032
+ },
1033
+ "YCbCrPositioning": {
1034
+ "number": 531,
1035
+ "type": ctypes.c_uint16,
1036
+ },
1037
+ "ReferenceBlackWhite": {
1038
+ "number": 532,
1039
+ "type": (
1040
+ ctypes.c_float,
1041
+ ctypes.c_float,
1042
+ ctypes.c_float,
1043
+ ctypes.c_float,
1044
+ ctypes.c_float,
1045
+ ctypes.c_float,
1046
+ ),
1047
+ },
1048
+ "StripRowCounts": {
1049
+ "number": 559,
1050
+ "type": None,
1051
+ },
1052
+ "XMLPacket": {
1053
+ "number": 700,
1054
+ "type": ctypes.c_uint8,
1055
+ },
1056
+ "ImageID": {
1057
+ "number": 32781,
1058
+ "type": None,
1059
+ },
1060
+ "Rating": {
1061
+ "number": 18246,
1062
+ "type": ctypes.c_uint16,
1063
+ },
1064
+ "RatingPercent": {
1065
+ "number": 18249,
1066
+ "type": ctypes.c_uint16,
1067
+ },
1068
+ "Datatype": {
1069
+ "number": 32996,
1070
+ "type": None,
1071
+ },
1072
+ "WANGAnnotation": {
1073
+ "number": 32932,
1074
+ "type": None,
1075
+ },
1076
+ "ImageDepth": {
1077
+ "number": 32997,
1078
+ "type": None,
1079
+ },
1080
+ "TileDepth": {
1081
+ "number": 32998,
1082
+ "type": None,
1083
+ },
1084
+ "CFARepeatPatternDim": {
1085
+ "number": 33421,
1086
+ "type": None,
1087
+ },
1088
+ "CFAPattern": {
1089
+ "number": 33422,
1090
+ "type": None,
1091
+ },
1092
+ "BatteryLevel": {
1093
+ "number": 33423,
1094
+ "type": None,
1095
+ },
1096
+ "Copyright": {
1097
+ "number": 33432,
1098
+ "type": ctypes.c_char_p,
1099
+ },
1100
+ "ExposureTime": {
1101
+ "number": 33434,
1102
+ "type": ctypes.c_double,
1103
+ },
1104
+ "FNumber": {
1105
+ "number": 33437,
1106
+ "type": ctypes.c_double,
1107
+ },
1108
+ "MDFile": {
1109
+ "number": 33445,
1110
+ "type": None,
1111
+ },
1112
+ "MDScalePixel": {
1113
+ "number": 33446,
1114
+ "type": None,
1115
+ },
1116
+ "MDColorTable": {
1117
+ "number": 33447,
1118
+ "type": None,
1119
+ },
1120
+ "MDLabName": {
1121
+ "number": 33448,
1122
+ "type": None,
1123
+ },
1124
+ "MDSampleInfo": {
1125
+ "number": 33449,
1126
+ "type": None,
1127
+ },
1128
+ "MdPrepDate": {
1129
+ "number": 33450,
1130
+ "type": None,
1131
+ },
1132
+ "MDPrepTime": {
1133
+ "number": 33451,
1134
+ "type": None,
1135
+ },
1136
+ "MDFileUnits": {
1137
+ "number": 33452,
1138
+ "type": None,
1139
+ },
1140
+ "ModelPixelScale": {
1141
+ "number": 33550,
1142
+ "type": None,
1129
1143
  },
1130
- 'ICCProfile': {
1131
- 'number': 34675,
1132
- 'type': None,
1144
+ "IPTC": {
1145
+ "number": 33723,
1146
+ "type": None,
1133
1147
  },
1134
- 'ImageLayer': {
1135
- 'number': 34732,
1136
- 'type': None,
1148
+ "INGRPacketData": {
1149
+ "number": 33918,
1150
+ "type": None,
1137
1151
  },
1138
- 'GeoKeyDirectory': {
1139
- 'number': 34735,
1140
- 'type': None,
1152
+ "INGRFlagRegisters": {
1153
+ "number": 33919,
1154
+ "type": None,
1141
1155
  },
1142
- 'GeoDoubleParams': {
1143
- 'number': 34736,
1144
- 'type': None,
1156
+ "IRASbTransformationMatrix": {
1157
+ "number": 33920,
1158
+ "type": None,
1145
1159
  },
1146
- 'GeoAsciiParams': {
1147
- 'number': 34737,
1148
- 'type': None,
1160
+ "ModelTiePoint": {
1161
+ "number": 33922,
1162
+ "type": None,
1149
1163
  },
1150
- 'ExposureProgram': {
1151
- 'number': 34850,
1152
- 'type': ctypes.c_uint16,
1164
+ "ModelTransformation": {
1165
+ "number": 34264,
1166
+ "type": None,
1153
1167
  },
1154
- 'SpectralSensitivity': {
1155
- 'number': 34852,
1156
- 'type': ctypes.c_char_p,
1168
+ "Photoshop": {
1169
+ "number": 34377,
1170
+ "type": None,
1157
1171
  },
1158
- 'GPSIFD': {
1159
- 'number': 34853,
1160
- 'type': None,
1172
+ "ExifTag": {
1173
+ "number": 34665,
1174
+ "type": ctypes.c_int32,
1161
1175
  },
1162
- 'ISOSpeedRatings': {
1163
- 'number': 34855,
1164
- 'type': ctypes.c_uint16,
1176
+ "ICCProfile": {
1177
+ "number": 34675,
1178
+ "type": None,
1165
1179
  },
1166
- 'OECF': {
1167
- 'number': 34856,
1168
- 'type': None,
1180
+ "ImageLayer": {
1181
+ "number": 34732,
1182
+ "type": None,
1169
1183
  },
1170
- 'Interlace': {
1171
- 'number': 34857,
1172
- 'type': None,
1184
+ "GeoKeyDirectory": {
1185
+ "number": 34735,
1186
+ "type": None,
1173
1187
  },
1174
- 'TimeZoneOffset': {
1175
- 'number': 34858,
1176
- 'type': None,
1188
+ "GeoDoubleParams": {
1189
+ "number": 34736,
1190
+ "type": None,
1177
1191
  },
1178
- 'SelfTimerMode': {
1179
- 'number': 34859,
1180
- 'type': None,
1192
+ "GeoAsciiParams": {
1193
+ "number": 34737,
1194
+ "type": None,
1181
1195
  },
1182
- 'SensitivityType': {
1183
- 'number': 34864,
1184
- 'type': None,
1196
+ "ExposureProgram": {
1197
+ "number": 34850,
1198
+ "type": ctypes.c_uint16,
1185
1199
  },
1186
- 'StandardOutputSensitivity': {
1187
- 'number': 34865,
1188
- 'type': None,
1200
+ "SpectralSensitivity": {
1201
+ "number": 34852,
1202
+ "type": ctypes.c_char_p,
1189
1203
  },
1190
- 'RecommendedExposureIndex': {
1191
- 'number': 34866,
1192
- 'type': None,
1204
+ "GPSIFD": {
1205
+ "number": 34853,
1206
+ "type": None,
1193
1207
  },
1194
- 'ISOSpeed': {
1195
- 'number': 34867,
1196
- 'type': None,
1208
+ "ISOSpeedRatings": {
1209
+ "number": 34855,
1210
+ "type": ctypes.c_uint16,
1197
1211
  },
1198
- 'ISOSpeedLatitudeYYY': {
1199
- 'number': 34868,
1200
- 'type': None,
1212
+ "OECF": {
1213
+ "number": 34856,
1214
+ "type": None,
1201
1215
  },
1202
- 'ISOSpeedLatitudeZZZ': {
1203
- 'number': 34869,
1204
- 'type': None,
1216
+ "Interlace": {
1217
+ "number": 34857,
1218
+ "type": None,
1205
1219
  },
1206
- 'HYLAFAXRecvParams': {
1207
- 'number': 34908,
1208
- 'type': None,
1220
+ "TimeZoneOffset": {
1221
+ "number": 34858,
1222
+ "type": None,
1209
1223
  },
1210
- 'HYLAFAXSubAddress': {
1211
- 'number': 34909,
1212
- 'type': None,
1224
+ "SelfTimerMode": {
1225
+ "number": 34859,
1226
+ "type": None,
1213
1227
  },
1214
- 'HYLAFAXRecvTime': {
1215
- 'number': 34910,
1216
- 'type': None,
1228
+ "SensitivityType": {
1229
+ "number": 34864,
1230
+ "type": None,
1217
1231
  },
1218
- 'ExifVersion': {
1219
- 'number': 36864,
1220
- 'type': ctypes.c_uint8,
1232
+ "StandardOutputSensitivity": {
1233
+ "number": 34865,
1234
+ "type": None,
1221
1235
  },
1222
- 'DateTimeOriginal': {
1223
- 'number': 36867,
1224
- 'type': None,
1236
+ "RecommendedExposureIndex": {
1237
+ "number": 34866,
1238
+ "type": None,
1225
1239
  },
1226
- 'DateTimeDigitized': {
1227
- 'number': 36868,
1228
- 'type': None,
1240
+ "ISOSpeed": {
1241
+ "number": 34867,
1242
+ "type": None,
1229
1243
  },
1230
- 'OffsetTime': {
1231
- 'number': 36880,
1232
- 'type': None,
1244
+ "ISOSpeedLatitudeYYY": {
1245
+ "number": 34868,
1246
+ "type": None,
1233
1247
  },
1234
- 'OffsetTimeOriginal': {
1235
- 'number': 36881,
1236
- 'type': None,
1248
+ "ISOSpeedLatitudeZZZ": {
1249
+ "number": 34869,
1250
+ "type": None,
1237
1251
  },
1238
- 'OffsetTimeDigitized': {
1239
- 'number': 36882,
1240
- 'type': None,
1252
+ "HYLAFAXRecvParams": {
1253
+ "number": 34908,
1254
+ "type": None,
1241
1255
  },
1242
- 'ComponentsConfiguration': {
1243
- 'number': 37121,
1244
- 'type': None
1256
+ "HYLAFAXSubAddress": {
1257
+ "number": 34909,
1258
+ "type": None,
1245
1259
  },
1246
- 'CompressedBitsPerPixel': {
1247
- 'number': 37122,
1248
- 'type': ctypes.c_uint8,
1260
+ "HYLAFAXRecvTime": {
1261
+ "number": 34910,
1262
+ "type": None,
1249
1263
  },
1250
- 'ShutterSpeedValue': {
1251
- 'number': 37377,
1252
- 'type': ctypes.c_double,
1264
+ "ExifVersion": {
1265
+ "number": 36864,
1266
+ "type": ctypes.c_uint8,
1253
1267
  },
1254
- 'ApertureValue': {
1255
- 'number': 37378,
1256
- 'type': ctypes.c_double,
1268
+ "DateTimeOriginal": {
1269
+ "number": 36867,
1270
+ "type": None,
1257
1271
  },
1258
- 'BrightnessValue': {
1259
- 'number': 37379,
1260
- 'type': ctypes.c_double,
1272
+ "DateTimeDigitized": {
1273
+ "number": 36868,
1274
+ "type": None,
1261
1275
  },
1262
- 'ExposureBiasValue': {
1263
- 'number': 37380,
1264
- 'type': ctypes.c_double,
1276
+ "OffsetTime": {
1277
+ "number": 36880,
1278
+ "type": None,
1265
1279
  },
1266
- 'MaxApertureValue': {
1267
- 'number': 37381,
1268
- 'type': ctypes.c_double,
1280
+ "OffsetTimeOriginal": {
1281
+ "number": 36881,
1282
+ "type": None,
1269
1283
  },
1270
- 'SubjectDistance': {
1271
- 'number': 37382,
1272
- 'type': ctypes.c_double,
1284
+ "OffsetTimeDigitized": {
1285
+ "number": 36882,
1286
+ "type": None,
1273
1287
  },
1274
- 'MeteringMode': {
1275
- 'number': 37383,
1276
- 'type': ctypes.c_uint16,
1288
+ "ComponentsConfiguration": {"number": 37121, "type": None},
1289
+ "CompressedBitsPerPixel": {
1290
+ "number": 37122,
1291
+ "type": ctypes.c_uint8,
1277
1292
  },
1278
- 'LightSource': {
1279
- 'number': 37384,
1280
- 'type': ctypes.c_uint16,
1293
+ "ShutterSpeedValue": {
1294
+ "number": 37377,
1295
+ "type": ctypes.c_double,
1281
1296
  },
1282
- 'Flash': {
1283
- 'number': 37385,
1284
- 'type': ctypes.c_uint16,
1297
+ "ApertureValue": {
1298
+ "number": 37378,
1299
+ "type": ctypes.c_double,
1285
1300
  },
1286
- 'FocalLength': {
1287
- 'number': 37386,
1288
- 'type': ctypes.c_double,
1301
+ "BrightnessValue": {
1302
+ "number": 37379,
1303
+ "type": ctypes.c_double,
1289
1304
  },
1290
- 'Noise': {
1291
- 'number': 37389,
1292
- 'type': None,
1305
+ "ExposureBiasValue": {
1306
+ "number": 37380,
1307
+ "type": ctypes.c_double,
1293
1308
  },
1294
- 'ImageNumber': {
1295
- 'number': 37393,
1296
- 'type': None,
1309
+ "MaxApertureValue": {
1310
+ "number": 37381,
1311
+ "type": ctypes.c_double,
1297
1312
  },
1298
- 'SecurityClassification': {
1299
- 'number': 37394,
1300
- 'type': None,
1313
+ "SubjectDistance": {
1314
+ "number": 37382,
1315
+ "type": ctypes.c_double,
1301
1316
  },
1302
- 'ImageHistory': {
1303
- 'number': 37395,
1304
- 'type': None,
1317
+ "MeteringMode": {
1318
+ "number": 37383,
1319
+ "type": ctypes.c_uint16,
1305
1320
  },
1306
- 'TIFFEPStandardID': {
1307
- 'number': 37398,
1308
- 'type': None,
1321
+ "LightSource": {
1322
+ "number": 37384,
1323
+ "type": ctypes.c_uint16,
1309
1324
  },
1310
- 'MakerNote': {
1311
- 'number': 37500,
1312
- 'type': ctypes.c_char_p,
1325
+ "Flash": {
1326
+ "number": 37385,
1327
+ "type": ctypes.c_uint16,
1313
1328
  },
1314
- 'UserComment': {
1315
- 'number': 37510,
1316
- 'type': ctypes.c_char_p,
1329
+ "FocalLength": {
1330
+ "number": 37386,
1331
+ "type": ctypes.c_double,
1317
1332
  },
1318
- 'SubSecTime': {
1319
- 'number': 37520,
1320
- 'type': ctypes.c_char_p,
1333
+ "Noise": {
1334
+ "number": 37389,
1335
+ "type": None,
1321
1336
  },
1322
- 'SubSecTimeOriginal': {
1323
- 'number': 37521,
1324
- 'type': ctypes.c_char_p,
1337
+ "ImageNumber": {
1338
+ "number": 37393,
1339
+ "type": None,
1325
1340
  },
1326
- 'SubSecTimeDigitized': {
1327
- 'number': 37522,
1328
- 'type': ctypes.c_char_p,
1341
+ "SecurityClassification": {
1342
+ "number": 37394,
1343
+ "type": None,
1329
1344
  },
1330
- 'ImageSourceData': {
1331
- 'number': 37724,
1332
- 'type': None,
1345
+ "ImageHistory": {
1346
+ "number": 37395,
1347
+ "type": None,
1333
1348
  },
1334
- 'Temperature': {
1335
- 'number': 37888,
1336
- 'type': None,
1349
+ "TIFFEPStandardID": {
1350
+ "number": 37398,
1351
+ "type": None,
1337
1352
  },
1338
- 'Humidity': {
1339
- 'number': 37889,
1340
- 'type': None,
1353
+ "MakerNote": {
1354
+ "number": 37500,
1355
+ "type": ctypes.c_char_p,
1341
1356
  },
1342
- 'Pressure': {
1343
- 'number': 37890,
1344
- 'type': None,
1357
+ "UserComment": {
1358
+ "number": 37510,
1359
+ "type": ctypes.c_char_p,
1345
1360
  },
1346
- 'WaterDepth': {
1347
- 'number': 37891,
1348
- 'type': None,
1361
+ "SubSecTime": {
1362
+ "number": 37520,
1363
+ "type": ctypes.c_char_p,
1349
1364
  },
1350
- 'Acceleration': {
1351
- 'number': 37892,
1352
- 'type': None,
1365
+ "SubSecTimeOriginal": {
1366
+ "number": 37521,
1367
+ "type": ctypes.c_char_p,
1368
+ },
1369
+ "SubSecTimeDigitized": {
1370
+ "number": 37522,
1371
+ "type": ctypes.c_char_p,
1372
+ },
1373
+ "ImageSourceData": {
1374
+ "number": 37724,
1375
+ "type": None,
1376
+ },
1377
+ "Temperature": {
1378
+ "number": 37888,
1379
+ "type": None,
1380
+ },
1381
+ "Humidity": {
1382
+ "number": 37889,
1383
+ "type": None,
1384
+ },
1385
+ "Pressure": {
1386
+ "number": 37890,
1387
+ "type": None,
1388
+ },
1389
+ "WaterDepth": {
1390
+ "number": 37891,
1391
+ "type": None,
1392
+ },
1393
+ "Acceleration": {
1394
+ "number": 37892,
1395
+ "type": None,
1396
+ },
1397
+ "CameraElevationAngle": {
1398
+ "number": 37893,
1399
+ "type": None,
1400
+ },
1401
+ "XPTitle": {
1402
+ "number": 40091,
1403
+ "type": None,
1404
+ },
1405
+ "XPComment": {
1406
+ "number": 40092,
1407
+ "type": None,
1408
+ },
1409
+ "XPAuthor": {
1410
+ "number": 40093,
1411
+ "type": None,
1412
+ },
1413
+ "XPKeywords": {
1414
+ "number": 40094,
1415
+ "type": None,
1416
+ },
1417
+ "XPSubject": {
1418
+ "number": 40095,
1419
+ "type": None,
1420
+ },
1421
+ "FlashPixVersion": {
1422
+ "number": 40960,
1423
+ "type": None,
1424
+ },
1425
+ "ColorSpace": {
1426
+ "number": 40961,
1427
+ "type": ctypes.c_uint16,
1428
+ },
1429
+ "PixelXDimension": {
1430
+ "number": 40962,
1431
+ "type": ctypes.c_uint64,
1432
+ },
1433
+ "PixelYDimension": {
1434
+ "number": 40963,
1435
+ "type": ctypes.c_uint64,
1436
+ },
1437
+ "InteroperabilityIFD": {
1438
+ "number": 40965,
1439
+ "type": None,
1440
+ },
1441
+ "FocalPlaneXResolution": {
1442
+ "number": 41486,
1443
+ "type": ctypes.c_double,
1444
+ },
1445
+ "FocalPlaneYResolution": {
1446
+ "number": 41487,
1447
+ "type": ctypes.c_double,
1448
+ },
1449
+ "FocalPlaneResolutionUnit": {
1450
+ "number": 41488,
1451
+ "type": ctypes.c_uint16,
1452
+ },
1453
+ "ExposureIndex": {
1454
+ "number": 41493,
1455
+ "type": ctypes.c_double,
1456
+ },
1457
+ "SensingMethod": {
1458
+ "number": 41495,
1459
+ "type": ctypes.c_uint16,
1460
+ },
1461
+ "SceneType": {
1462
+ "number": 41729,
1463
+ "type": ctypes.c_uint8,
1464
+ },
1465
+ "FlashEnergy": {"number": 41483, "type": None},
1466
+ "SpatialFrequencyResponse": {"number": 41484, "type": None},
1467
+ "SubjectLocation": {"number": 41492, "type": None},
1468
+ "FileSource": {"number": 41728, "type": None},
1469
+ "ExifCFAPattern": {"number": 41730, "type": None},
1470
+ "CustomRendered": {"number": 41985, "type": None},
1471
+ "ExposureMode": {
1472
+ "number": 41986,
1473
+ "type": ctypes.c_uint16,
1474
+ },
1475
+ "WhiteBalance": {
1476
+ "number": 41987,
1477
+ "type": ctypes.c_uint16,
1478
+ },
1479
+ "DigitalZoomRatio": {
1480
+ "number": 41988,
1481
+ "type": ctypes.c_double,
1482
+ },
1483
+ "FocalLengthIn35mmFilm": {
1484
+ "number": 41989,
1485
+ "type": ctypes.c_uint16,
1486
+ },
1487
+ "SceneCaptureType": {
1488
+ "number": 41990,
1489
+ "type": ctypes.c_uint16,
1490
+ },
1491
+ "GainControl": {
1492
+ "number": 41991,
1493
+ "type": ctypes.c_uint16,
1494
+ },
1495
+ "Contrast": {
1496
+ "number": 41992,
1497
+ "type": ctypes.c_uint16,
1498
+ },
1499
+ "Saturation": {
1500
+ "number": 41993,
1501
+ "type": ctypes.c_uint16,
1502
+ },
1503
+ "Sharpness": {
1504
+ "number": 41994,
1505
+ "type": ctypes.c_uint16,
1506
+ },
1507
+ "DeviceSettingDescription": {
1508
+ "number": 41995,
1509
+ "type": ctypes.c_char_p,
1510
+ },
1511
+ "SubjectDistanceRange": {
1512
+ "number": 41996,
1513
+ "type": ctypes.c_uint16,
1514
+ },
1515
+ "ImageUniqueID": {"number": 42016, "type": None},
1516
+ "CameraOwnerName": {"number": 42032, "type": None},
1517
+ "BodySerialNumber": {"number": 42033, "type": None},
1518
+ "LensSpecification": {"number": 42034, "type": None},
1519
+ "LensMake": {"number": 42035, "type": None},
1520
+ "LensModel": {"number": 42036, "type": None},
1521
+ "LensSerialNumber": {"number": 42037, "type": None},
1522
+ "CompositeImage": {"number": 42080, "type": None},
1523
+ "SourceImageNumberOfCompositeImage": {"number": 42081, "type": None},
1524
+ "SourceExposureTimeOfCompositeImage": {"number": 42082, "type": None},
1525
+ "GDAL_Metadata": {
1526
+ "number": 42112,
1527
+ "type": None,
1528
+ },
1529
+ "GDAL_NoData": {
1530
+ "number": 42113,
1531
+ "type": None,
1532
+ },
1533
+ "Gamma": {
1534
+ "number": 42240,
1535
+ "type": None,
1536
+ },
1537
+ "OCEScanJobDescription": {
1538
+ "number": 50215,
1539
+ "type": None,
1540
+ },
1541
+ "OCEApplicationSelector": {
1542
+ "number": 50216,
1543
+ "type": None,
1544
+ },
1545
+ "OCEIdentificationNumber": {
1546
+ "number": 50217,
1547
+ "type": None,
1548
+ },
1549
+ "OCEImageLogicCharacteristics": {
1550
+ "number": 50218,
1551
+ "type": None,
1552
+ },
1553
+ "PrintImageMatching": {
1554
+ "number": 50341,
1555
+ "type": None,
1556
+ },
1557
+ "DNGVersion": {
1558
+ "number": 50706,
1559
+ "type": None,
1560
+ },
1561
+ "DNGBackwardVersion": {
1562
+ "number": 50707,
1563
+ "type": None,
1564
+ },
1565
+ "UniqueCameraModel": {
1566
+ "number": 50708,
1567
+ "type": None,
1568
+ },
1569
+ "LocalizedCameraModel": {
1570
+ "number": 50709,
1571
+ "type": None,
1572
+ },
1573
+ "CFAPlaneColor": {
1574
+ "number": 50710,
1575
+ "type": None,
1576
+ },
1577
+ "CFALayout": {
1578
+ "number": 50711,
1579
+ "type": None,
1580
+ },
1581
+ "LinearizationTable": {
1582
+ "number": 50712,
1583
+ "type": None,
1584
+ },
1585
+ "BlackLevelRepeatDim": {
1586
+ "number": 50713,
1587
+ "type": None,
1588
+ },
1589
+ "BlackLevel": {
1590
+ "number": 50714,
1591
+ "type": None,
1592
+ },
1593
+ "BlackLevelDeltaH": {
1594
+ "number": 50715,
1595
+ "type": None,
1596
+ },
1597
+ "BlackLevelDeltaV": {
1598
+ "number": 50716,
1599
+ "type": None,
1600
+ },
1601
+ "WhiteLevel": {
1602
+ "number": 50717,
1603
+ "type": None,
1604
+ },
1605
+ "DefaultScale": {
1606
+ "number": 50718,
1607
+ "type": None,
1608
+ },
1609
+ "DefaultCropOrigin": {
1610
+ "number": 50719,
1611
+ "type": None,
1612
+ },
1613
+ "DefaultCropSize": {
1614
+ "number": 50720,
1615
+ "type": None,
1616
+ },
1617
+ "ColorMatrix1": {
1618
+ "number": 50721,
1619
+ "type": None,
1620
+ },
1621
+ "ColorMatrix2": {
1622
+ "number": 50722,
1623
+ "type": None,
1353
1624
  },
1354
- 'CameraElevationAngle': {
1355
- 'number': 37893,
1356
- 'type': None,
1625
+ "CameraCalibration1": {
1626
+ "number": 50723,
1627
+ "type": None,
1357
1628
  },
1358
- 'XPTitle': {
1359
- 'number': 40091,
1360
- 'type': None,
1629
+ "CameraCalibration2": {
1630
+ "number": 50724,
1631
+ "type": None,
1361
1632
  },
1362
- 'XPComment': {
1363
- 'number': 40092,
1364
- 'type': None,
1633
+ "ReductionMatrix1": {
1634
+ "number": 50725,
1635
+ "type": None,
1365
1636
  },
1366
- 'XPAuthor': {
1367
- 'number': 40093,
1368
- 'type': None,
1637
+ "ReductionMatrix2": {
1638
+ "number": 50726,
1639
+ "type": None,
1369
1640
  },
1370
- 'XPKeywords': {
1371
- 'number': 40094,
1372
- 'type': None,
1641
+ "AnalogBalance": {
1642
+ "number": 50727,
1643
+ "type": None,
1373
1644
  },
1374
- 'XPSubject': {
1375
- 'number': 40095,
1376
- 'type': None,
1645
+ "AsShotNeutral": {
1646
+ "number": 50728,
1647
+ "type": None,
1377
1648
  },
1378
- 'FlashPixVersion': {
1379
- 'number': 40960,
1380
- 'type': None,
1649
+ "AsShotWhiteXY": {
1650
+ "number": 50729,
1651
+ "type": None,
1381
1652
  },
1382
- 'ColorSpace': {
1383
- 'number': 40961,
1384
- 'type': ctypes.c_uint16,
1653
+ "BaselineExposure": {
1654
+ "number": 50730,
1655
+ "type": None,
1385
1656
  },
1386
- 'PixelXDimension': {
1387
- 'number': 40962,
1388
- 'type': ctypes.c_uint64,
1657
+ "BaselineNoise": {
1658
+ "number": 50731,
1659
+ "type": None,
1389
1660
  },
1390
- 'PixelYDimension': {
1391
- 'number': 40963,
1392
- 'type': ctypes.c_uint64,
1661
+ "BaselineSharpness": {
1662
+ "number": 50732,
1663
+ "type": None,
1393
1664
  },
1394
- 'InteroperabilityIFD': {
1395
- 'number': 40965,
1396
- 'type': None,
1665
+ "BayerGreenSplit": {
1666
+ "number": 50733,
1667
+ "type": None,
1397
1668
  },
1398
- 'FocalPlaneXResolution': {
1399
- 'number': 41486,
1400
- 'type': ctypes.c_double,
1669
+ "LinearResponseLimit": {
1670
+ "number": 50734,
1671
+ "type": None,
1401
1672
  },
1402
- 'FocalPlaneYResolution': {
1403
- 'number': 41487,
1404
- 'type': ctypes.c_double,
1673
+ "CameraSerialNumber": {
1674
+ "number": 50735,
1675
+ "type": None,
1405
1676
  },
1406
- 'FocalPlaneResolutionUnit': {
1407
- 'number': 41488,
1408
- 'type': ctypes.c_uint16,
1677
+ "LensInfo": {
1678
+ "number": 50736,
1679
+ "type": None,
1409
1680
  },
1410
- 'ExposureIndex': {
1411
- 'number': 41493,
1412
- 'type': ctypes.c_double,
1681
+ "ChromaBlurRadius": {
1682
+ "number": 50737,
1683
+ "type": None,
1413
1684
  },
1414
- 'SensingMethod': {
1415
- 'number': 41495,
1416
- 'type': ctypes.c_uint16,
1685
+ "AntiAliasStrength": {
1686
+ "number": 50738,
1687
+ "type": None,
1417
1688
  },
1418
- 'SceneType': {
1419
- 'number': 41729,
1420
- 'type': ctypes.c_uint8,
1689
+ "ShadowScale": {
1690
+ "number": 50739,
1691
+ "type": None,
1421
1692
  },
1422
- 'FlashEnergy': {
1423
- 'number': 41483,
1424
- 'type': None
1693
+ "DNGPrivateData": {
1694
+ "number": 50740,
1695
+ "type": None,
1425
1696
  },
1426
- 'SpatialFrequencyResponse': {
1427
- 'number': 41484,
1428
- 'type': None
1697
+ "MakerNoteSafety": {
1698
+ "number": 50741,
1699
+ "type": None,
1429
1700
  },
1430
- 'SubjectLocation': {
1431
- 'number': 41492,
1432
- 'type': None
1701
+ "CalibrationIllumintant1": {
1702
+ "number": 50778,
1703
+ "type": None,
1433
1704
  },
1434
- 'FileSource': {
1435
- 'number': 41728,
1436
- 'type': None
1705
+ "CalibrationIllumintant2": {
1706
+ "number": 50779,
1707
+ "type": None,
1437
1708
  },
1438
- 'ExifCFAPattern': {
1439
- 'number': 41730,
1440
- 'type': None
1709
+ "BestQualityScale": {
1710
+ "number": 50780,
1711
+ "type": None,
1441
1712
  },
1442
- 'CustomRendered': {
1443
- 'number': 41985,
1444
- 'type': None
1713
+ "RawDataUniqueID": {
1714
+ "number": 50781,
1715
+ "type": None,
1445
1716
  },
1446
- 'ExposureMode': {
1447
- 'number': 41986,
1448
- 'type': ctypes.c_uint16,
1717
+ "AliasLayerMetadata": {
1718
+ "number": 50784,
1719
+ "type": None,
1449
1720
  },
1450
- 'WhiteBalance': {
1451
- 'number': 41987,
1452
- 'type': ctypes.c_uint16,
1721
+ "OriginalRawFileName": {
1722
+ "number": 50827,
1723
+ "type": None,
1453
1724
  },
1454
- 'DigitalZoomRatio': {
1455
- 'number': 41988,
1456
- 'type': ctypes.c_double,
1725
+ "OriginalRawFileData": {
1726
+ "number": 50828,
1727
+ "type": None,
1457
1728
  },
1458
- 'FocalLengthIn35mmFilm': {
1459
- 'number': 41989,
1460
- 'type': ctypes.c_uint16,
1729
+ "ActiveArea": {
1730
+ "number": 50829,
1731
+ "type": None,
1461
1732
  },
1462
- 'SceneCaptureType': {
1463
- 'number': 41990,
1464
- 'type': ctypes.c_uint16,
1733
+ "MaskedAreas": {
1734
+ "number": 50830,
1735
+ "type": None,
1465
1736
  },
1466
- 'GainControl': {
1467
- 'number': 41991,
1468
- 'type': ctypes.c_uint16,
1737
+ "AsShotICCProfile": {
1738
+ "number": 50831,
1739
+ "type": None,
1469
1740
  },
1470
- 'Contrast': {
1471
- 'number': 41992,
1472
- 'type': ctypes.c_uint16,
1741
+ "AsShotPreProfileMatrix": {
1742
+ "number": 50832,
1743
+ "type": None,
1473
1744
  },
1474
- 'Saturation': {
1475
- 'number': 41993,
1476
- 'type': ctypes.c_uint16,
1745
+ "CurrentICCProfile": {
1746
+ "number": 50833,
1747
+ "type": None,
1477
1748
  },
1478
- 'Sharpness': {
1479
- 'number': 41994,
1480
- 'type': ctypes.c_uint16,
1749
+ "CurrentPreProfileMatrix": {
1750
+ "number": 50834,
1751
+ "type": None,
1481
1752
  },
1482
- 'DeviceSettingDescription': {
1483
- 'number': 41995,
1484
- 'type': ctypes.c_char_p,
1753
+ "ColorimetricReference": {
1754
+ "number": 50839,
1755
+ "type": None,
1485
1756
  },
1486
- 'SubjectDistanceRange': {
1487
- 'number': 41996,
1488
- 'type': ctypes.c_uint16,
1757
+ "TIFF_RSID": {
1758
+ "number": 50908,
1759
+ "type": None,
1489
1760
  },
1490
- 'ImageUniqueID': {
1491
- 'number': 42016,
1492
- 'type': None
1761
+ "GEO_Metadata": {
1762
+ "number": 50909,
1763
+ "type": None,
1493
1764
  },
1494
- 'CameraOwnerName': {
1495
- 'number': 42032,
1496
- 'type': None
1765
+ "CameraCalibrationSignature": {
1766
+ "number": 50931,
1767
+ "type": None,
1497
1768
  },
1498
- 'BodySerialNumber': {
1499
- 'number': 42033,
1500
- 'type': None
1769
+ "ProfileCalibrationSignature": {
1770
+ "number": 50932,
1771
+ "type": None,
1501
1772
  },
1502
- 'LensSpecification': {
1503
- 'number': 42034,
1504
- 'type': None
1773
+ "AsShotProfileName": {
1774
+ "number": 50934,
1775
+ "type": None,
1505
1776
  },
1506
- 'LensMake': {
1507
- 'number': 42035,
1508
- 'type': None
1777
+ "NoiseReductionApplied": {
1778
+ "number": 50935,
1779
+ "type": None,
1509
1780
  },
1510
- 'LensModel': {
1511
- 'number': 42036,
1512
- 'type': None
1781
+ "ProfileName": {
1782
+ "number": 50936,
1783
+ "type": None,
1513
1784
  },
1514
- 'LensSerialNumber': {
1515
- 'number': 42037,
1516
- 'type': None
1785
+ "ProfileHueSatMapDims": {
1786
+ "number": 50937,
1787
+ "type": None,
1517
1788
  },
1518
- 'CompositeImage': {
1519
- 'number': 42080,
1520
- 'type': None
1789
+ "ProfileHueSatMapData1": {
1790
+ "number": 50938,
1791
+ "type": None,
1521
1792
  },
1522
- 'SourceImageNumberOfCompositeImage': {
1523
- 'number': 42081,
1524
- 'type': None
1793
+ "ProfileHueSatMapData2": {
1794
+ "number": 50939,
1795
+ "type": None,
1525
1796
  },
1526
- 'SourceExposureTimeOfCompositeImage': {
1527
- 'number': 42082,
1528
- 'type': None
1797
+ "ProfileToneCurve": {
1798
+ "number": 50940,
1799
+ "type": None,
1529
1800
  },
1530
- 'GDAL_Metadata': {
1531
- 'number': 42112,
1532
- 'type': None,
1801
+ "ProfileEmbedPolicy": {
1802
+ "number": 50941,
1803
+ "type": None,
1533
1804
  },
1534
- 'GDAL_NoData': {
1535
- 'number': 42113,
1536
- 'type': None,
1805
+ "ProfileCopyright": {
1806
+ "number": 50942,
1807
+ "type": None,
1537
1808
  },
1538
- 'Gamma': {
1539
- 'number': 42240,
1540
- 'type': None,
1809
+ "ForwardMatrix1": {
1810
+ "number": 50964,
1811
+ "type": None,
1541
1812
  },
1542
- 'OCEScanJobDescription': {
1543
- 'number': 50215,
1544
- 'type': None,
1813
+ "ForwardMatrix2": {
1814
+ "number": 50965,
1815
+ "type": None,
1545
1816
  },
1546
- 'OCEApplicationSelector': {
1547
- 'number': 50216,
1548
- 'type': None,
1817
+ "PreviewApplicationName": {
1818
+ "number": 50966,
1819
+ "type": None,
1549
1820
  },
1550
- 'OCEIdentificationNumber': {
1551
- 'number': 50217,
1552
- 'type': None,
1821
+ "PreviewApplicationVersion": {
1822
+ "number": 50967,
1823
+ "type": None,
1553
1824
  },
1554
- 'OCEImageLogicCharacteristics': {
1555
- 'number': 50218,
1556
- 'type': None,
1825
+ "PreviewSettingsName": {
1826
+ "number": 50968,
1827
+ "type": None,
1557
1828
  },
1558
- 'PrintImageMatching': {
1559
- 'number': 50341,
1560
- 'type': None,
1829
+ "PreviewSettingsDigest": {
1830
+ "number": 50969,
1831
+ "type": None,
1561
1832
  },
1562
- 'DNGVersion': {
1563
- 'number': 50706,
1564
- 'type': None,
1833
+ "PreviewColorSpace": {
1834
+ "number": 50970,
1835
+ "type": None,
1565
1836
  },
1566
- 'DNGBackwardVersion': {
1567
- 'number': 50707,
1568
- 'type': None,
1837
+ "PreviewDateTime": {
1838
+ "number": 50971,
1839
+ "type": None,
1569
1840
  },
1570
- 'UniqueCameraModel': {
1571
- 'number': 50708,
1572
- 'type': None,
1841
+ "RawImageDigest": {
1842
+ "number": 50972,
1843
+ "type": None,
1573
1844
  },
1574
- 'LocalizedCameraModel': {
1575
- 'number': 50709,
1576
- 'type': None,
1845
+ "OriginalRawFileDigest": {
1846
+ "number": 50973,
1847
+ "type": None,
1577
1848
  },
1578
- 'CFAPlaneColor': {
1579
- 'number': 50710,
1580
- 'type': None,
1849
+ "SubTileBlockSize": {
1850
+ "number": 50974,
1851
+ "type": None,
1581
1852
  },
1582
- 'CFALayout': {
1583
- 'number': 50711,
1584
- 'type': None,
1853
+ "RowInterleaveFactor": {
1854
+ "number": 50975,
1855
+ "type": None,
1585
1856
  },
1586
- 'LinearizationTable': {
1587
- 'number': 50712,
1588
- 'type': None,
1857
+ "ProfileLookTableDims": {
1858
+ "number": 50981,
1859
+ "type": None,
1589
1860
  },
1590
- 'BlackLevelRepeatDim': {
1591
- 'number': 50713,
1592
- 'type': None,
1861
+ "ProfileLookTableData": {
1862
+ "number": 50982,
1863
+ "type": None,
1593
1864
  },
1594
- 'BlackLevel': {
1595
- 'number': 50714,
1596
- 'type': None,
1865
+ "OpcodeList1": {
1866
+ "number": 51008,
1867
+ "type": None,
1597
1868
  },
1598
- 'BlackLevelDeltaH': {
1599
- 'number': 50715,
1600
- 'type': None,
1869
+ "OpcodeList2": {
1870
+ "number": 51009,
1871
+ "type": None,
1601
1872
  },
1602
- 'BlackLevelDeltaV': {
1603
- 'number': 50716,
1604
- 'type': None,
1873
+ "OpcodeList3": {
1874
+ "number": 51022,
1875
+ "type": None,
1605
1876
  },
1606
- 'WhiteLevel': {
1607
- 'number': 50717,
1608
- 'type': None,
1877
+ "NoiseProfile": {
1878
+ "number": 51041,
1879
+ "type": None,
1609
1880
  },
1610
- 'DefaultScale': {
1611
- 'number': 50718,
1612
- 'type': None,
1881
+ "JPEGQuality": {
1882
+ "number": 65537,
1883
+ "type": ctypes.c_int32,
1613
1884
  },
1614
- 'DefaultCropOrigin': {
1615
- 'number': 50719,
1616
- 'type': None,
1617
- },
1618
- 'DefaultCropSize': {
1619
- 'number': 50720,
1620
- 'type': None,
1621
- },
1622
- 'ColorMatrix1': {
1623
- 'number': 50721,
1624
- 'type': None,
1625
- },
1626
- 'ColorMatrix2': {
1627
- 'number': 50722,
1628
- 'type': None,
1629
- },
1630
- 'CameraCalibration1': {
1631
- 'number': 50723,
1632
- 'type': None,
1633
- },
1634
- 'CameraCalibration2': {
1635
- 'number': 50724,
1636
- 'type': None,
1637
- },
1638
- 'ReductionMatrix1': {
1639
- 'number': 50725,
1640
- 'type': None,
1641
- },
1642
- 'ReductionMatrix2': {
1643
- 'number': 50726,
1644
- 'type': None,
1645
- },
1646
- 'AnalogBalance': {
1647
- 'number': 50727,
1648
- 'type': None,
1649
- },
1650
- 'AsShotNeutral': {
1651
- 'number': 50728,
1652
- 'type': None,
1653
- },
1654
- 'AsShotWhiteXY': {
1655
- 'number': 50729,
1656
- 'type': None,
1657
- },
1658
- 'BaselineExposure': {
1659
- 'number': 50730,
1660
- 'type': None,
1661
- },
1662
- 'BaselineNoise': {
1663
- 'number': 50731,
1664
- 'type': None,
1665
- },
1666
- 'BaselineSharpness': {
1667
- 'number': 50732,
1668
- 'type': None,
1669
- },
1670
- 'BayerGreenSplit': {
1671
- 'number': 50733,
1672
- 'type': None,
1673
- },
1674
- 'LinearResponseLimit': {
1675
- 'number': 50734,
1676
- 'type': None,
1677
- },
1678
- 'CameraSerialNumber': {
1679
- 'number': 50735,
1680
- 'type': None,
1681
- },
1682
- 'LensInfo': {
1683
- 'number': 50736,
1684
- 'type': None,
1685
- },
1686
- 'ChromaBlurRadius': {
1687
- 'number': 50737,
1688
- 'type': None,
1689
- },
1690
- 'AntiAliasStrength': {
1691
- 'number': 50738,
1692
- 'type': None,
1693
- },
1694
- 'ShadowScale': {
1695
- 'number': 50739,
1696
- 'type': None,
1697
- },
1698
- 'DNGPrivateData': {
1699
- 'number': 50740,
1700
- 'type': None,
1701
- },
1702
- 'MakerNoteSafety': {
1703
- 'number': 50741,
1704
- 'type': None,
1705
- },
1706
- 'CalibrationIllumintant1': {
1707
- 'number': 50778,
1708
- 'type': None,
1709
- },
1710
- 'CalibrationIllumintant2': {
1711
- 'number': 50779,
1712
- 'type': None,
1713
- },
1714
- 'BestQualityScale': {
1715
- 'number': 50780,
1716
- 'type': None,
1717
- },
1718
- 'RawDataUniqueID': {
1719
- 'number': 50781,
1720
- 'type': None,
1721
- },
1722
- 'AliasLayerMetadata': {
1723
- 'number': 50784,
1724
- 'type': None,
1725
- },
1726
- 'OriginalRawFileName': {
1727
- 'number': 50827,
1728
- 'type': None,
1729
- },
1730
- 'OriginalRawFileData': {
1731
- 'number': 50828,
1732
- 'type': None,
1733
- },
1734
- 'ActiveArea': {
1735
- 'number': 50829,
1736
- 'type': None,
1737
- },
1738
- 'MaskedAreas': {
1739
- 'number': 50830,
1740
- 'type': None,
1741
- },
1742
- 'AsShotICCProfile': {
1743
- 'number': 50831,
1744
- 'type': None,
1745
- },
1746
- 'AsShotPreProfileMatrix': {
1747
- 'number': 50832,
1748
- 'type': None,
1749
- },
1750
- 'CurrentICCProfile': {
1751
- 'number': 50833,
1752
- 'type': None,
1753
- },
1754
- 'CurrentPreProfileMatrix': {
1755
- 'number': 50834,
1756
- 'type': None,
1757
- },
1758
- 'ColorimetricReference': {
1759
- 'number': 50839,
1760
- 'type': None,
1761
- },
1762
- 'TIFF_RSID': {
1763
- 'number': 50908,
1764
- 'type': None,
1765
- },
1766
- 'GEO_Metadata': {
1767
- 'number': 50909,
1768
- 'type': None,
1769
- },
1770
- 'CameraCalibrationSignature': {
1771
- 'number': 50931,
1772
- 'type': None,
1773
- },
1774
- 'ProfileCalibrationSignature': {
1775
- 'number': 50932,
1776
- 'type': None,
1777
- },
1778
- 'AsShotProfileName': {
1779
- 'number': 50934,
1780
- 'type': None,
1781
- },
1782
- 'NoiseReductionApplied': {
1783
- 'number': 50935,
1784
- 'type': None,
1785
- },
1786
- 'ProfileName': {
1787
- 'number': 50936,
1788
- 'type': None,
1789
- },
1790
- 'ProfileHueSatMapDims': {
1791
- 'number': 50937,
1792
- 'type': None,
1793
- },
1794
- 'ProfileHueSatMapData1': {
1795
- 'number': 50938,
1796
- 'type': None,
1797
- },
1798
- 'ProfileHueSatMapData2': {
1799
- 'number': 50939,
1800
- 'type': None,
1801
- },
1802
- 'ProfileToneCurve': {
1803
- 'number': 50940,
1804
- 'type': None,
1805
- },
1806
- 'ProfileEmbedPolicy': {
1807
- 'number': 50941,
1808
- 'type': None,
1809
- },
1810
- 'ProfileCopyright': {
1811
- 'number': 50942,
1812
- 'type': None,
1813
- },
1814
- 'ForwardMatrix1': {
1815
- 'number': 50964,
1816
- 'type': None,
1817
- },
1818
- 'ForwardMatrix2': {
1819
- 'number': 50965,
1820
- 'type': None,
1821
- },
1822
- 'PreviewApplicationName': {
1823
- 'number': 50966,
1824
- 'type': None,
1825
- },
1826
- 'PreviewApplicationVersion': {
1827
- 'number': 50967,
1828
- 'type': None,
1829
- },
1830
- 'PreviewSettingsName': {
1831
- 'number': 50968,
1832
- 'type': None,
1833
- },
1834
- 'PreviewSettingsDigest': {
1835
- 'number': 50969,
1836
- 'type': None,
1837
- },
1838
- 'PreviewColorSpace': {
1839
- 'number': 50970,
1840
- 'type': None,
1841
- },
1842
- 'PreviewDateTime': {
1843
- 'number': 50971,
1844
- 'type': None,
1845
- },
1846
- 'RawImageDigest': {
1847
- 'number': 50972,
1848
- 'type': None,
1849
- },
1850
- 'OriginalRawFileDigest': {
1851
- 'number': 50973,
1852
- 'type': None,
1853
- },
1854
- 'SubTileBlockSize': {
1855
- 'number': 50974,
1856
- 'type': None,
1857
- },
1858
- 'RowInterleaveFactor': {
1859
- 'number': 50975,
1860
- 'type': None,
1861
- },
1862
- 'ProfileLookTableDims': {
1863
- 'number': 50981,
1864
- 'type': None,
1865
- },
1866
- 'ProfileLookTableData': {
1867
- 'number': 50982,
1868
- 'type': None,
1869
- },
1870
- 'OpcodeList1': {
1871
- 'number': 51008,
1872
- 'type': None,
1873
- },
1874
- 'OpcodeList2': {
1875
- 'number': 51009,
1876
- 'type': None,
1877
- },
1878
- 'OpcodeList3': {
1879
- 'number': 51022,
1880
- 'type': None,
1881
- },
1882
- 'NoiseProfile': {
1883
- 'number': 51041,
1884
- 'type': None,
1885
- },
1886
- 'JPEGQuality': {
1887
- 'number': 65537,
1888
- 'type': ctypes.c_int32,
1889
- },
1890
- 'JPEGColorMode': {
1891
- 'number': 65538,
1892
- 'type': ctypes.c_int32,
1885
+ "JPEGColorMode": {
1886
+ "number": 65538,
1887
+ "type": ctypes.c_int32,
1893
1888
  },
1894
1889
  }
1895
1890
 
1896
1891
  # We need the reverse mapping as well.
1897
- TAGNUM2NAME = {value['number']: key for key, value in TAGS.items()}
1892
+ TAGNUM2NAME = {value["number"]: key for key, value in TAGS.items()}
1898
1893
 
1899
1894
 
1900
1895
  def tiff_header(read_buffer):
1901
1896
  """Interpret the uuid raw data as a tiff header."""
1902
1897
  # First 8 should be (73, 73, 42, 8) or (77, 77, 42, 8)
1903
- data = struct.unpack('BB', read_buffer[0:2])
1898
+ data = struct.unpack("BB", read_buffer[0:2])
1904
1899
  if data[0] == 73 and data[1] == 73:
1905
1900
  # little endian
1906
- endian = '<'
1901
+ endian = "<"
1907
1902
  elif data[0] == 77 and data[1] == 77:
1908
1903
  # big endian
1909
- endian = '>'
1904
+ endian = ">"
1910
1905
  else:
1911
1906
  msg = (
1912
1907
  f"The byte order indication in the TIFF header "
@@ -1915,7 +1910,7 @@ def tiff_header(read_buffer):
1915
1910
  )
1916
1911
  raise RuntimeError(msg)
1917
1912
 
1918
- _, offset = struct.unpack(endian + 'HI', read_buffer[2:8])
1913
+ _, offset = struct.unpack(endian + "HI", read_buffer[2:8])
1919
1914
 
1920
1915
  # This is the 'Exif Image' portion.
1921
1916
  return _Ifd(endian, read_buffer, offset).processed_ifd
@@ -1925,6 +1920,7 @@ class BadTiffTagDatatype(RuntimeError):
1925
1920
  """This exception exists soley to better communicate up the stack that the
1926
1921
  problem exists.
1927
1922
  """
1923
+
1928
1924
  pass
1929
1925
 
1930
1926
 
@@ -1944,16 +1940,18 @@ class _Ifd(object):
1944
1940
  processed_ifd : dictionary
1945
1941
  Maps tag name to "mildly-interpreted" tag value.
1946
1942
  """
1943
+
1947
1944
  def __init__(self, endian, read_buffer, offset):
1948
1945
  self.endian = endian
1949
1946
  self.read_buffer = read_buffer
1950
1947
  self.processed_ifd = OrderedDict()
1951
1948
 
1952
- self.num_tags, = struct.unpack(
1953
- endian + 'H', read_buffer[offset:offset + 2]
1949
+ (self.num_tags,) = struct.unpack(
1950
+ endian + "H",
1951
+ read_buffer[offset:offset + 2]
1954
1952
  )
1955
1953
 
1956
- fmt = self.endian + 'HHII' * self.num_tags
1954
+ fmt = self.endian + "HHII" * self.num_tags
1957
1955
  ifd_buffer = read_buffer[offset + 2:offset + 2 + self.num_tags * 12]
1958
1956
  data = struct.unpack(fmt, ifd_buffer)
1959
1957
  self.raw_ifd = OrderedDict()
@@ -1971,10 +1969,10 @@ class _Ifd(object):
1971
1969
  def parse_tag(self, tag, dtype, count, offset_buf):
1972
1970
  """Interpret an Exif image tag data payload."""
1973
1971
  try:
1974
- fmt = DATATYPE2FMT[dtype]['format'] * count
1975
- payload_size = DATATYPE2FMT[dtype]['nbytes'] * count
1972
+ fmt = DATATYPE2FMT[dtype]["format"] * count
1973
+ payload_size = DATATYPE2FMT[dtype]["nbytes"] * count
1976
1974
  except KeyError:
1977
- msg = f'Invalid TIFF tag datatype ({dtype}).'
1975
+ msg = f"Invalid TIFF tag datatype ({dtype})."
1978
1976
  raise BadTiffTagDatatype(msg)
1979
1977
 
1980
1978
  if payload_size <= 4:
@@ -1983,12 +1981,12 @@ class _Ifd(object):
1983
1981
  else:
1984
1982
  # Interpret the payload at the offset specified by the 4 bytes in
1985
1983
  # the tag entry.
1986
- offset, = struct.unpack(self.endian + 'I', offset_buf)
1984
+ (offset,) = struct.unpack(self.endian + "I", offset_buf)
1987
1985
  target_buffer = self.read_buffer[offset:offset + payload_size]
1988
1986
 
1989
1987
  if dtype == 2:
1990
1988
  # ASCII
1991
- payload = target_buffer.decode('utf-8').rstrip('\x00')
1989
+ payload = target_buffer.decode("utf-8").rstrip("\x00")
1992
1990
 
1993
1991
  else:
1994
1992
  payload = struct.unpack(self.endian + fmt, target_buffer)
@@ -2004,9 +2002,7 @@ class _Ifd(object):
2004
2002
  # tuple.
2005
2003
  payload = payload[0]
2006
2004
  else:
2007
- payload = np.array(
2008
- payload, dtype=DATATYPE2FMT[dtype]['nptype']
2009
- )
2005
+ payload = np.array(payload, dtype=DATATYPE2FMT[dtype]["nptype"])
2010
2006
 
2011
2007
  return payload
2012
2008
 
@@ -2017,11 +2013,11 @@ class _Ifd(object):
2017
2013
  tag_name = TAGNUM2NAME[tag]
2018
2014
  except KeyError:
2019
2015
  # Ok, we don't recognize this tag. Just use the numeric id.
2020
- msg = f'Unrecognized UUID box TIFF tag ({tag}).'
2016
+ msg = f"Unrecognized UUID box TIFF tag ({tag})."
2021
2017
  warnings.warn(msg, UserWarning)
2022
2018
  tag_name = tag
2023
2019
 
2024
- if tag_name == 'ExifTag':
2020
+ if tag_name == "ExifTag":
2025
2021
  # There's an Exif IFD at the offset specified here.
2026
2022
  ifd = _Ifd(self.endian, self.read_buffer, value)
2027
2023
  self.processed_ifd[tag_name] = ifd.processed_ifd
@@ -2033,20 +2029,20 @@ class _Ifd(object):
2033
2029
  # maps the TIFF enumerated datatype to the corresponding structs datatype code,
2034
2030
  # the data width, and the corresponding numpy datatype
2035
2031
  DATATYPE2FMT = {
2036
- 1: {'format': 'B', 'nbytes': 1, 'nptype': np.ubyte},
2037
- 2: {'format': 'B', 'nbytes': 1, 'nptype': str},
2038
- 3: {'format': 'H', 'nbytes': 2, 'nptype': np.uint16},
2039
- 4: {'format': 'I', 'nbytes': 4, 'nptype': np.uint32},
2040
- 5: {'format': 'II', 'nbytes': 8, 'nptype': np.double},
2041
- 6: {'format': 'b', 'nbytes': 1, 'nptype': np.int8},
2042
- 7: {'format': 'B', 'nbytes': 1, 'nptype': np.uint8},
2043
- 8: {'format': 'h', 'nbytes': 2, 'nptype': np.int16},
2044
- 9: {'format': 'i', 'nbytes': 4, 'nptype': np.int32},
2045
- 10: {'format': 'ii', 'nbytes': 8, 'nptype': np.double},
2046
- 11: {'format': 'f', 'nbytes': 4, 'nptype': np.double},
2047
- 12: {'format': 'd', 'nbytes': 8, 'nptype': np.double},
2048
- 13: {'format': 'I', 'nbytes': 4, 'nptype': np.uint32},
2049
- 16: {'format': 'Q', 'nbytes': 8, 'nptype': np.uint64},
2050
- 17: {'format': 'q', 'nbytes': 8, 'nptype': np.int64},
2051
- 18: {'format': 'Q', 'nbytes': 8, 'nptype': np.uint64}
2032
+ 1: {"format": "B", "nbytes": 1, "nptype": np.ubyte},
2033
+ 2: {"format": "B", "nbytes": 1, "nptype": str},
2034
+ 3: {"format": "H", "nbytes": 2, "nptype": np.uint16},
2035
+ 4: {"format": "I", "nbytes": 4, "nptype": np.uint32},
2036
+ 5: {"format": "II", "nbytes": 8, "nptype": np.double},
2037
+ 6: {"format": "b", "nbytes": 1, "nptype": np.int8},
2038
+ 7: {"format": "B", "nbytes": 1, "nptype": np.uint8},
2039
+ 8: {"format": "h", "nbytes": 2, "nptype": np.int16},
2040
+ 9: {"format": "i", "nbytes": 4, "nptype": np.int32},
2041
+ 10: {"format": "ii", "nbytes": 8, "nptype": np.double},
2042
+ 11: {"format": "f", "nbytes": 4, "nptype": np.double},
2043
+ 12: {"format": "d", "nbytes": 8, "nptype": np.double},
2044
+ 13: {"format": "I", "nbytes": 4, "nptype": np.uint32},
2045
+ 16: {"format": "Q", "nbytes": 8, "nptype": np.uint64},
2046
+ 17: {"format": "q", "nbytes": 8, "nptype": np.int64},
2047
+ 18: {"format": "Q", "nbytes": 8, "nptype": np.uint64},
2052
2048
  }