/usr/share/perl5/Image/MetaData/JPEG/TagLists.pod is in libimage-metadata-jpeg-perl 0.153-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 | ###########################################################
# A Perl package for showing/modifying JPEG (meta)data. #
# Copyright (C) 2004,2005,2006 Stefano Bettelli #
# See the COPYING and LICENSE files for license terms. #
###########################################################
###########################################################
# This file contains only the package man-page in perldoc #
# format. In order to visualise it, it is sufficient to #
# type "perldoc <name_of_this_file>". #
###########################################################
=head1 NAME
Image::MetaData::JPEG::TagLists - This document contains a collection of
tag tables for JPEG segments; it is an appendix to the main manual page of
the L<Image::MetaData::JPEG> module, which the reader should refer to for
further details and the general scope.
=head1 Valid tags for Exif APP1 data
The Japan Electronics and Information Technology Industries Association
(JEITA) set up a standard for an exchange format for digital still cameras
pictures, known as Exif. This standard defines a structure for embedding
meta-data in a JPEG picture, to be written in the APP1 segment. The
generalities and the reference documents about this structure are
introduced in the L<Structure|Image::MetaData::JPEG::Structures/Structure
of an Exif APP1 segment> appendix; this section and its subsections list
the valid interoperability record tags as well as their format.
=head2 Canonical Exif 2.2 and TIFF 6.0 tags for IFD0 and IFD1
In general, IFD0 and IFD1 can host tags from the same set. These tags are
divided in three categories: canonical, additional and registered to
companies. The tags listed in the following table are to be considered
canonical; they are described at length in the Exif standard document, and
can be found both in the IFD0 and in the IFD1 (some of them, in fact, must
be present in both directories). The 'class' column carries the tag class;
possible values are: A (image data structure), B (offsets), C (image data
characteristics), D (other tags) and P (pointers to other IFDs). The two
following columns show tag hexadecimal codes and names. The 'type' column
specifies the (always unsigned) tag type: I (short or long), S (short), L
(long), R (rational) and A (ASCII, always null terminated). The 'count'
column obviously carries the tag count ('-' for a variable count, either
because it is a variable length string or because it depends on other tags).
The 'IFD0' and 'IFD1' columns specify the support level in the respective
directory; each column comprises four letters, because both the primary
image (IFD0) and the thumbnail (IFD1) can come in four varieties
(uncompressed chunky, uncompressed planar, uncompressed YCC and JPEG
compressed). This module currently focuses only on JPEG pictures (not
TIFF), so only the fourth letter of the 'IFD0' column is interesting, but
note that the thumbnail of a JPEG image can be uncompressed. The support
level codes stand for: M (mandatory), R (recommended), O (optional), N
(not_recorded) and J (included in JPEG marker and so not recorded).
The 'thumbnail-only' column shows a 'T' for those records which cannot be
set/changed by the user exception made during a thumbnail update action
(and some of them are calculated automatically anyway). Note that, in some
cases, it is possible to set a tag when its support level is 'N' (e.g., the
YCbCr stuff in IFD1): picture displaying programs should however simply
ignore it. Some other tags, concerning offsets or thumbnail specific
information, cannot be set by the module user (they are calculated
automatically, more reliably): these are marked by 'calculated' in the
notes, or by a 'T' in the thumbnail-only column.
Hexadecimal code count IFD0 IFD1 thumbnail-only
class | Tag name type | supp.supp.| notes
| | | | | | | | |
A 100 ImageWidth I 1 MMMJ MMMJ T (not JPEG) pixels/row
A 101 ImageLength I 1 MMMJ MMMJ T (not JPEG) num. rows
A 102 BitsPerSample S 3 MMMJ MMMJ T (not JPEG) 8,8,8
A 103 Compression S 1 MMMJ MMMM T 1(uncompr.) or 6(JPEG)
A 106 PhotometricInterpretation S 1 MMMN MMMJ 2(RGB) or 6(YCbCr)
D 10e ImageDescription A - RRRR OOOO (see note 1)
D 10f Make A - RRRR OOOO camera manufacturer
D 110 Model A - RRRR OOOO camera model
B 111 StripOffsets I - MMMN MMMN calculated
A 112 Orientation S 1 RRRR OOOO (see note 2)
A 115 SamplesPerPixel S 1 MMMJ MMMJ T (not JPEG) 3 compon.
B 116 RowsPerStrip I 1 MMMN MMMN T (not JPEG)
B 117 StripByteCounts I - MMMN MMMN T (not JPEG)
A 11a XResolution R 1 MMMM MMMM (see note 3)
A 11b YResolution R 1 MMMM MMMM (see note 3)
A 11c PlanarConfiguration S 1 OMOJ OMOJ (see note 4)
A 128 ResolutionUnit S 1 MMMM MMMM (see note 3)
C 12d TransferFunction S 768 RRRR OOOO (see note 5)
D 131 Software A - OOOO OOOO Exif software/firmware
D 132 DateTime A 20 RRRR OOOO (see note 6)
D 13b Artist A - OOOO OOOO owner/photogr./creator
C 13e WhitePoint R 2 OOOO OOOO (see note 5)
C 13f PrimaryChromaticities R 6 OOOO OOOO (see note 5)
B 201 JPEGInterchangeFormat L 1 NNNN NNNM calculated
B 202 JPEGInterchangeFormatLength L 1 NNNN NNNM T (only JPEG)
C 211 YCbCrCoefficients R 3 NNOO NNOO (see note 7)
A 212 YCbCrSubSampling S 2 NNMJ NNMJ (see note 7)
A 213 YCbCrPositioning S 1 NNMM NNOO (see note 7)
C 214 ReferenceBlackWhite R 6 OOOO OOOO (see note 8)
D 8298 Copyright A - OOOO OOOO of photogr./editor
P 8769 ExifOffset L 1 MMMM OOOO calculated
P 8825 GPSInfo L 1 OOOO OOOO calculated
Notes:
1) The image description is a string containing a title or a comment for
the image and all characters must be one byte long. When a two-byte
code is necessary, the Exif Private tag 'UserComment' is to be used
(see L</Exif tags for the 0th IFD Exif private subdirectory>).
2) The image orientation is defined with respect to first row and the
first column, according to the following table (values not listed here
are reserved and should not be used); the default value is 1.
------------------------ ------------------------
val. 0th row 0th column val. 0th row 0th column
----|--------|---------- ----|--------|----------
1 top left 5 left top
2 top right 6 right top
3 bottom right 7 right bottom
4 bottom left 8 left bottom
------------------------ ------------------------
3) The 'XResolution' and 'YResolution' tags indicate the number of pixels
per resolution unit (given by the 'ResolutionUnit' tag) along the
image width or height respectively. The resolution unit can be only 2
(inches) or 3 (centimetres), all other values being reserved. When
the resolution is not set, a value of 72 dots/inch is assumed.
4) This indicates whether pixel components are recorded in chunky (1,
default) or planar (2) format (only for TIFF images; JPEG compressed
files use a JPEG marker instead); all other values are reserved.
5) 'TransferFunction', 'WhitePoint' and 'PrimaryChromaticities' specify,
respectively, a transfer function for the image in tabular style
(3*256 short integers), the chromaticity of the white point, and the
chromaticity of the three primary colours of the image. Normally these
tags are not necessary, since the colour space is specified in the
'ColorSpace' L<private Exif tag|/Exif tags for the 0th IFD Exif
private subdirectory>.
6) This tag indicates the time of the "image creation" (i.e., the time
the file was last changed). The tag value is a null terminated string
of the form "YYYY:MM:DD HH:MM:SS" (note the space in the middle and
the colon signs), in 24-hour format. If the tag is set, but the value
is not meaningful, all numbers should be set to spaces (replacing also
the colons with spaces is permitted too). See also 'DateTimeOriginal'
and 'DateTimeDigitized' in the SubIFD L<section|/Exif tags for the 0th
IFD Exif private subdirectory>. [Currently, only years after 1800 can
be set with this Perl module].
7) Digital images are often displayed on RGB devices, but recorded data
can be saved in a YCbCr colour space because of the JPEG
compression. The Exif standard provides three tags for translating one
space into the other (see the sYCC IEC standard for more details).
'YCbCrSubSampling' is the sampling ratio of the chrominance components
in relation to the luminance component; its value can be only [2, 1]
(for YCbCr 4:2:2) or [2, 2] (for YCbCr 4:2:0). In JPEG compressed data
a JPEG marker is used instead of this tag. 'YCbCrPositioning' is the
position of the chrominance components in relation to the luminance
component, and is meaningful only for JPEG compressed data or
uncompressed YCbCr data; its value can be only 1 (centred, default) or
2 (co-sited). 'YCbCrCoefficients' contains the matrix coefficients for
the transformation from RGB to YCbCr image data.
8) This tags contains the reference values for the black and white points
of the image. No defaults are given in the TIFF standard, but Exif
assumes the following values: [0, 255, 0, 255, 0, 255] (when
'PhotometricInterpretation' is RGB) or [0, 255, 0, 128, 0, 128] (when
'PhotometricInterpretation' is YCbCr).
=head2 Additional TIFF 6.0 tags not in Exif 2.2 for IFD0
The tags listed in the following table are present in the TIFF 6.0 standard
and not in the Exif 2.2 standard. They are presented here just for
reference, since some digital cameras or programs still include them,
incorrectly, in the IFD0 (they are not present in IFD1, I assume). The
'class' column carries the tag class; possible values are: a (TIFF 6.0 tags
for baseline TIFFs not in Exif 2.2), b (extensions to TIFF 6.0 specs not in
Exif 2.2) and '-' (updates and corrections to TIFF 6.0). The two following
columns show tag hexadecimal codes and names. The 'type' column specifies
the tag type: i (byte or short), I (short or long), B (byte), S (short), L
(long), R (rational), F (floating point numbers), D (double precision
floating point numbers), '-' (unspecified, best fit) and A (ASCII, always
null terminated). The 'count' column obviously carries the tag count ('-'
that it is variable, either because it is a variable length string or
because it depends on other tags).
Hexadecimal code count notes
class | Tag name type | |
| | | | | |
a fe NewSubfileType L 1 TIFFs can hold multiple images
a ff SubFileType S 1 TIFFs can hold multiple images
a 107 Thresholding S 1 for Graylevel to Black&White
a 108 CellWidth S 1 halftoning matrix support
a 109 CellLength S 1 halftoning matrix support
a 10a FillOrder S 1 bits' logical order in a byte
b 10d DocumentName A - document storage and retrieval
a 118 MinSampleValue S - only for statistical purposes
a 119 MaxSampleValue S - only for statistical purposes
b 11d PageName A - document storage and retrieval
b 11e XPosition R 1 document storage and retrieval
b 11f YPosition R 1 document storage and retrieval
a 120 FreeOffsets L - not recommended for interchange
a 121 FreeByteCounts L - not recommended for interchange
a 122 GrayResponseUnit S 1 for gray-scale images
a 123 GrayResponseCurve S - for gray-scale images
b 124 T4Options L 1 (group 3 options)
b 125 T6Options L 1 (group 4 options)
b 129 PageNumber S 2 document storage and retrieval
- 12c ColorResponseUnit S 1 [obsoleted in TIFF 6.0]
a 13c HostComputer A - computer/OS used for creation
b 13d Predictor S 1 differencing predictor
a 140 Colormap S - RGB colour map
b 141 HalftoneHints S 2 half tone hints
b 142 TileWidth I 1 tiled images
b 143 TileLength I 1 tiled images
b 144 TileOffsets L - tiled images
b 145 TileByteCounts I - tiled images
- 146 BadFaxLines I 1 [TIFF class F draft]
- 147 CleanFaxData S 1 [TIFF class F draft]
- 148 ConsecutiveBadFaxLines I 1 [TIFF class F draft]
- 14a SubIFDs L - [Adobe TIFF technote 1]
b 14c InkSet S 1 CMYK images
b 14d InkNames A - CMYK images
b 14e NumberOfInks S 1 CMYK images
b 150 DotRange i - CMYK images
b 151 TargetPrinter A - CMYK images
a 152 ExtraSamples S - pixel extra components
b 153 SampleFormats S - data sample format
b 154 SMinSampleValue - - data sample format
b 155 SMaxSampleValue - - data sample format
b 156 TransferRange S 6 image colourimetry
- 157 ClipPath B - [Adobe TIFF technote 2]
- 158 XClipPathUnits D 1 [Adobe TIFF technote 2]
- 159 YClipPathUnits D 1 [Adobe TIFF technote 2]
- 15a Indexed S 1 [Adobe TIFF technote 3]
- 15b JPEGTables - - [update (1995) for JPEG-in-TIFF]
- 15f OPIProxy S 1 [Adobe TIFF technote (OPI)]
b 200 JPEGProc S 1 JPEG support
b 203 JPEGRestartInterval S 1 JPEG support
b 205 JPEGLosslessPredictors S - JPEG support
b 206 JPEGPointTransforms S - JPEG support
b 207 JPEGQTables L - JPEG support
b 208 JPEGDCTables L - JPEG support
b 209 JPEGACTables L - JPEG support
- 2bc XML_Packet B - [Adobe XMP technote 9-14-02]
=head2 Exif tags assigned to companies for IFD0 and IFD1
The tags listed in the following table, all with a value larger than
0x8000, i.e. 32000, were requested by individual companies and assigned to
them by the TIFF committee; well, at least I think, because it is very
difficult to have an official list for these tags, so that they should be
considered at the level of "rumours". This list also includes some TIFF/IT
tags from ISO 12639 and some TIFF/EP tags from ISO 12234 (private Exif tags
in JPEG APP1 originated from TIFF/EP, so there is a large intersection:
TIFF/EP tags which are also Exif are not listed here).
Hexadecimal code count notes
| Tag name type | |
| | | | |
800d ImageID A - [Adobe TIFF technote (OPI)]
80b9 RefPts ? ? [Island Graphics ]
80ba RegionTackPoint ? ? [Island Graphics ]
80bb RegionWarpCorners ? ? [Island Graphics ]
80bc RegionAffine ? ? [Island Graphics ]
80e3 Matteing S 1 [SGI (obsoleted by ExtraSamples)]
80e4 DataType S - [SGI (obsoleted by SampleFormat)]
80e5 ImageDepth I 1 [SGI (z dimension)]
80e6 TileDepth I 1 [SGI (subvolume tiling)]
8214 ImageFullWidth L 1 [Pixar (cropped images)]
8215 ImageFullLength L 1 [Pixar (cropped images)]
8216 TextureFormat A - [Pixar (texture formats)]
8217 WrapModes A - [Pixar (texture formats)]
8218 FovCot F 1 [Pixar (texture formats)]
8219 MatrixWorldToScreen F 16 [Pixar (texture formats)]
821a MatrixWorldToCamera F 16 [Pixar (texture formats)]
827d WriterSerialNumber ? ? [Eastman Kodak (device serial number)]
828d CFARepeatPatternDim S 2 [ ISO/DIS 12234-2 TIFF/EP]
828e CFAPattern B - [ ISO/DIS 12234-2 TIFF/EP]
828f BatteryLevel RA 1- [ ISO/DIS 12234-2 TIFF/EP]
830e ModelPixelScaleTag D 3 [SoftDesk (GeoTIFF)]
83bb IPTC/NAA LA - [ ISO/DIS 12234-2 TIFF/EP]
8480 IntergraphMatrixTag D 16 [Intergraph, deprecated (GeoTIFF)]
8482 ModelTiepointTag D - [Intergraph, aka Georef.Tag (GeoTIFF)]
84e0 Site A - [ ISO/DIS 12639 TIFF/IT]
84e1 ColorSequence A - [ ISO/DIS 12639 TIFF/IT]
84e2 IT8Header A - [ ISO/DIS 12639 TIFF/IT]
84e3 RasterPadding S 1 [ ISO/DIS 12639 TIFF/IT]
84e4 BitsPerRunLength S 1 [ ISO/DIS 12639 TIFF/IT]
84e5 BitsPerExtendedRunLength S 1 [ ISO/DIS 12639 TIFF/IT]
84e6 ColorTable B - [ ISO/DIS 12639 TIFF/IT]
84e7 ImageColorIndicator B 1 [ ISO/DIS 12639 TIFF/IT]
84e8 BackgroundColorIndicator B 1 [ ISO/DIS 12639 TIFF/IT]
84e9 ImageColorValue B 1 [ ISO/DIS 12639 TIFF/IT]
84ea BackgroundColorValue B 1 [ ISO/DIS 12639 TIFF/IT]
84eb PixelIntensityRange B 2 [ ISO/DIS 12639 TIFF/IT]
84ec TransparencyIndicator B 1 [ ISO/DIS 12639 TIFF/IT]
84ed ColorCharacterization A - [ ISO/DIS 12639 TIFF/IT]
84ee HCUsage L 1 [ ISO/DIS 12639 TIFF/IT]
84ef TrapIndicator B 1 [ ISO/DIS 12639 TIFF/IT]
84f0 CMYKEquivalent i - [ ISO/DIS 12639 TIFF/IT]
84f1 Reserved_TIFF_IT_1 - - [ ISO/DIS 12639 TIFF/IT]
84f2 Reserved_TIFF_IT_2 - - [ ISO/DIS 12639 TIFF/IT]
84f3 Reserved_TIFF_IT_3 - - [ ISO/DIS 12639 TIFF/IT]
85b8 FrameCount L 1 [Texas Instruments (Sequence Count)]
85d8 ModelTransformationTag D 16 [JPL Cartogr. App. Group (GeoTIFF)]
8649 PhotoshopImageResources B ? [Adobe (Photoshop)]
8773 ICCProfile - - [Inter Colour Consortium (TIFF/IT)]
87af GeoKeyDirectoryTag S - [SPOT Image Inc. (GeoTIFF)]
87b0 GeoDoubleParamsTag D - [SPOT Image Inc. (GeoTIFF)]
87b1 GeoAsciiParamsTag A - [SPOT Image Inc. (GeoTIFF)]
87be JBIGOptions ? ? [Pixel Magic ]
8829 Interlace S 1 [ ISO/DIS 12234-2 TIFF/EP]
882a TimeZoneOffset SS - [ ISO/DIS 12234-2 TIFF/EP]
882b SelfTimerMode S 1 [ ISO/DIS 12234-2 TIFF/EP]
885c FaxRecvParams L 1 [SGI (fax support)]
885d FaxSubAddress A - [SGI (fax support)]
885e FaxRecvTime L 1 [SGI (fax support)]
8871 FedExEDR ? ? [FedEx ]
920b FlashEnergy R - [ ISO/DIS 12234-2 TIFF/EP]
920c SpatialFrequencyResponse - - [ ISO/DIS 12234-2 TIFF/EP]
920d Noise - - [ ISO/DIS 12234-2 TIFF/EP]
920e FocalPlaneXResolution R 1 [ ISO/DIS 12234-2 TIFF/EP]
920f FocalPlaneYResolution R 1 [ ISO/DIS 12234-2 TIFF/EP]
9210 FocalPlaneResolutionUnit S 1 [ ISO/DIS 12234-2 TIFF/EP]
9211 ImageNumber L 1 [ ISO/DIS 12234-2 TIFF/EP]
9212 SecurityClassification A - [ ISO/DIS 12234-2 TIFF/EP]
9213 ImageHistory A - [ ISO/DIS 12234-2 TIFF/EP]
9215 ExposureIndex R - [ ISO/DIS 12234-2 TIFF/EP]
9216 TIFF/EPStandardID B 4 [ ISO/DIS 12234-2 TIFF/EP]
9217 SensingMethod S 1 [ ISO/DIS 12234-2 TIFF/EP]
923f StoNits D 1 [SGI (LogLuv Encoding)]
935c ImageSourceData - - [Adobe Photoshop ]
c4a5 PrintIM_Data ? ? [Epson ]
c44f PhotoshopAnnotations ? ? [Adobe Photoshop ]
ffff DCSHueShiftValues ? ? [Eastman Kodak ]
=head2 Exif tags for the 0th IFD Exif private subdirectory
The tags listed in the following table are all the Exif 2.2 private tags,
i.e., those which populate the 0th IFD SubIFD; they are described at length
in the Exif L<standard document|Image::MetaData::JPEG::Structures/Structure
of an Exif APP1 segment> (but see also the non-standard Photoshop SubIFD
tags at the end of this section). The 'class' column carries the tag class;
possible values are: a (tags relating to version), b (image data
characteristics), c (image configuration), d (user information), e (related
file information), f (date and time), g (picture taking conditions) and h
(other Exif 2.2 tags). The two following columns show tag hexadecimal codes
and names. The 'type' column specifies the tag type: I (short or long), S
(short), L (long), R (rational), SR (signed rational), U (undefined) and A
(ASCII, always null terminated). The 'count' column obviously carries the
tag count ('-' means that it is variable).
The 'SubIFD' column specifies the support level; it comprises four letters,
because the primary image (IFD0) can come in four varieties (uncompressed
chunky, uncompressed planar, uncompressed YCC and JPEG compressed). This
module currently focuses only on JPEG pictures (not TIFF), so only the
fourth letter is interesting. The support level codes stand for: M
(mandatory), R (recommended), O (optional), and N (not recorded). Tags
marked as 'calculated' in the notes must not be set by the module user,
since they concern offsets and data types (which are calculated
automatically, more reliably).
Hexadecimal code count SubIFD notes
class | Tag name type | support|
| | | | | | |
g 829a ExposureTime R 1 RRRR in seconds
g 829d FNumber R 1 OOOO (see note 1)
g 8822 ExposureProgram S 1 OOOO valid values are 0-8
g 8824 SpectralSensitivity A - OOOO see ASTM technical committee
g 8827 ISOSpeedRatings S - OOOO see ISO 12232
g 8828 OECF U - OOOO see ISO 14524
a 9000 ExifVersion U 4 MMMM (see note 2)
f 9003 DateTimeOriginal A 20 OOOO (see note 3)
f 9004 DateTimeDigitized A 20 OOOO (see note 3)
c 9101 ComponentsConfiguration U 4 NNNM (see note 4)
c 9102 CompressedBitsPerPixel R 1 NNNO compression rate
g 9201 ShutterSpeedValue SR 1 OOOO (see note 1)
g 9202 ApertureValue R 1 OOOO (see note 1)
g 9203 BrightnessValue SR 1 OOOO (see note 1)
g 9204 ExposureBiasValue SR 1 OOOO (see note 1)
g 9205 MaxApertureValue R 1 OOOO smallest ApertureValue
g 9206 SubjectDistance R 1 OOOO in meters
g 9207 MeteringMode S 1 OOOO valid values are 0-6 and 255
g 9208 LightSource S 1 OOOO use 0-4,9-15,17-24 or 255
g 9209 Flash S 1 RRRR (see note 5)
g 920a FocalLength R 1 OOOO in millimetres
g 9214 SubjectArea S - OOOO (see note 6)
d 927c MakerNote U - OOOO calculated
d 9286 UserComment U - OOOO (see note 7)
f 9290 SubSecTime A - OOOO (see note 8)
f 9291 SubSecTimeOriginal A - OOOO (see note 8)
f 9292 SubSecTimeDigitized A - OOOO (see note 8)
a a000 FlashpixVersion U 4 MMMM (see note 2)
b a001 ColorSpace S 1 MMMM valid values are 1 and 65535
c a002 PixelXDimension I 1 NNNM picture X-dim, see note 9)
c a003 PixelYDimension I 1 NNNM picture Y-dim, see note 9)
e a004 RelatedSoundFile A 13 OOOO (see note 10)
h a005 InteroperabilityOffset L 1 NNNO calculated by the module
g a20b FlashEnergy R 1 OOOO in BCPS
g a20c SpatialFrequencyResponse U - OOOO (see ISO 12233
g a20e FocalPlaneXResolution R 1 OOOO .
g a20f FocalPlaneYResolution R 1 OOOO .
g a210 FocalPlaneResolutionUnit S 1 OOOO valid values are 2 and 3
g a214 SubjectLocation S 2 OOOO in pixels
g a215 ExposureIndex R 1 OOOO .
g a217 SensingMethod S 1 OOOO valid values are 1-5,7 and 8
g a300 FileSource U 1 OOOO only allowed value is 3
g a301 SceneType U 1 OOOO only allowed value is 1
g a302 CFAPattern U - OOOO (see note 11)
g a401 CustomRendered S 1 OOOO valid values are 0 and 1
g a402 ExposureMode S 1 RRRR valid values are 0,1 and 2
g a403 WhiteBalance S 1 RRRR valid values are 0 and 1
g a404 DigitalZoomRatio R 1 OOOO .
g a405 FocalLengthIn35mmFilm S 1 OOOO .
g a406 SceneCaptureType S 1 RRRR valid values are 0,1,2 and 3
g a407 GainControl S 1 OOOO valid values are 0,1,2,3 & 4
g a408 Contrast S 1 OOOO valid values are 0,1 and 2
g a409 Saturation S 1 OOOO valid values are 0,1 and 2
g a40a Sharpness S 1 OOOO valid values are 0,1 and 2
g a40b DeviceSettingDescription U - OOOO (see note 12)
g a40c SubjectDistanceRange S 1 OOOO valid values are 0,1,2 and 3
h a420 ImageUniqueID A 33 OOOO matches /[0-9a-fA-F]+\000+/
Notes:
1) The camera information in the Exif standard conforms to the APEX
(Additive System of Photographic Exposure) unit system. APEX is a
convenient unit for expressing exposure (Ev). The relation of APEX
to other units is essentially as follows:
--------------------------------------------------------
ApertureValue (Av) = 2 log2(FNumber)
ShutterSpeedValue (Tv) = - log2(ExposureTime)
BrightnessValue (Bv) = log2(Brightness) + constant
FilmSensitivity (Sv) = log2(ASA/3.125) [not in Exif]
Exposure (Ev) = Av + Tv = Bv + Sv
--------------------------------------------------------
2) A version tag is a sequence of four numerical characters representing
the supported version of the standard (e.g., '0220' for version 2.2).
Possible versions for Exif: 1.0, 1.1, 2.0, 2.1, 2.2 and 2.2.1.
Possible versions for Flashpix: 1.0.
3) These tags indicate the time of the original-image data generation and
of its storage (hardly any difference, usually). Their value is a
null terminated string of the form "YYYY:MM:DD HH:MM:SS" (note the
space in the middle and the colon signs), in 24-hour format. If the
tag is set, but the value is not meaningful, all numbers should be set
to spaces (replacing also the colons with spaces is permitted
too). See also 'DateTime' in the canonical tag L<section|/Canonical
Exif 2.2 and TIFF 6.0 tags for IFD0 and IFD1>. [Currently, only years
after 1800 can be set with this Perl module].
4) This tag indicates the channels of each component, arranged in order
from the 1st component to the 4th. For uncompressed data the data
arrangement is given in the 'PhotometricInterpretation' tag. The four
numeric characters must be in the range '0' - '6', and legal combina-
tions are '4560' (if RGB uncompressed) and '1230' (all other cases).
5) This tag indicates the status of flash when the image was shot.
Bit 0 indicates the flash firing status, bits 1 and 2 indicate the
flash return status, bits 3 and 4 indicate the flash mode, bit 5
indicates whether the flash function is present, and bit 6 indicates
"red eye" mode. The allowed decimal values for the bit-mask are
therefore 0, 1, 5, 7, 9, 13, 15, 16, 24, 25, 29, 31, 32, 65, 69,
71, 73, 77, 79, 89, 93 and 95.
6) This tag indicates the location and area of the main subject in the
overall scene. Count can be 2 (a spot defined by two coordinates),
3 (a circle defined by centre coordinates and diameter) and
4 (a rectangle defined by its centre coordinates and its dimensions).
7) The 'UserComment' tag must start with an 8 byte "ID code", which
can be "ASCII\00\00\00", "JIS\00\00\00\00\00", "Unicode" or eight
null bytes for "undefined". The ID code identifies the character
code to be used in the following. A null terminator is not required.
8) A sub-second-time tag value represents a fraction of a second, relative
to the 'DateTime' tag and other such tags, as an ASCII null-terminated
string made of numeric characters; an arbitrary number of spaces can
be appended to the numeric characters string. If sub-second data is not
known the tag value may contain only spaces. The corresponding regular
expression is /\d*\s*\000/.
9) This is the valid width or height of the meaningful image (horizontal
dimension does not include data padding). Overall image dimensions can
be read in the SOF segment (this includes padding however).
10) This tag is used to record the name of an audio file related to the
image data: an ASCII string consisting of 8 characters + '.' + 3
characters, terminated by NULL. The path is not recorded.
The corresponding regular expression is /\w{8}\.\w{3}\000/.
11) This tag indicates the colour filter array (CFA) geometric pattern of
the image sensor when a one-chip colour area sensor is used. The first
four bytes must be interpreted as two shorts giving the horizontal (m)
and vertical (n) repeat pixel units. Then, m x n bytes follow, giving
the actual colour filter values (in the range 0-6).
12) This tag indicates information on the picture-taking conditions of a
particular camera model, for a reader. The first four bytes must be
interpreted as two shorts giving the number of display rows and columns.
The following bytes must be interpreted as Unicode (UCS-2) streams,
NULL terminated and including the signature. The specifics of the
Unicode string are as given in ISO/IEC 10464-1. An approximation to
the corresponding regular expression is /.{4}(\376\377(.{2})*\000\000)*/.
The Adobe's Photoshop program, at least from version 7.0 on, seems to add
some non-standard tags to the Exif private tags subdirectory during the
treatment of raw camera pictures. The corresponding record values are all
ASCII strings ($ASCII type), and contain the description of the tags
themselves. The following might be an incomplete list:
Hexadecimal code count value begins with (a null terminated
| Tag name type | string is to be added at the end):
| | | | |
fde8 _OwnerName A - "Owner's Name: "
fde9 _SerialNumber A - "Serial Number: "
fdea _Lens A - "Lens: "
fe4c _RawFile A - "Raw File: "
fe4d _Converter A - "Converter: "
fe4e _WhiteBalance A - "White Balance: "
fe51 _Exposure A - "Exposure: "
fe52 _Shadows A - "Shadows: "
fe53 _Brightness A - "Brightness: "
fe54 _Contrast A - "Contrast: "
fe55 _Saturation A - "Saturation: "
fe56 _Sharpness A - "Sharpness: "
fe57 _Smoothness A - "Smoothness: "
fe58 _MoireFilter A - "Moire Filter: "
=head2 Exif tags for the 0th IFD Interoperability subdirectory
If the main image is compressed (which is always the case for a JPEG
picture), the "Design rule for Camera File system"
L<recommendations|Image::MetaData::JPEG::Structures/Structure of an Exif
APP1 segment> suggest to add another IFD below SubIFD, the Interoperability
IFD, pointed to by the InteroperabilityOffset tag; legal tags are listed in
the following table. The first two columns show tag hexadecimal codes and
names. The 'type' column specifies the tag type: I (short or long), U
(undefined) and A (ASCII, always null terminated). The 'count' column
obviously specifies the value count ('-' means that it is variable). The
"Index" and "Version" tags are mandatory if the subIFD is present, and they
are automatically added by this module if necessary.
Hexadecimal code count SubIFD notes
| Tag name type | suppt. |
| | | | | |
0001 InteroperabilityIndex A 4 NNNM R98 (THM would work for IFD1)
0002 InteroperabilityVersion U 4 NNNM e.g. '0100' means 1.00
1000 RelatedImageFileFormat A - NNNO e.g. 'Exif JPEG Ver. 2.1'
1001 RelatedImageWidth I 1 NNNO image X dimension
1002 RelatedImageLength I 1 NNNO image Y dimension
=head2 Exif tags for the 0th IFD GPS subdirectory
The following tags are used for GPS attributes in the GPS IFD, pointed to
(if present) by the GPSInfo tag in IFD0 or IFD1. This standard was already
used in TIFF/EP, and is now part of L<Exif
2.2|Image::MetaData::JPEG::Structures/Structure of an Exif APP1
segment>. The first two columns show tag hexadecimal codes and names. The
'type' column specifies the tag type: B (byte), S (short), R (rational), U
(undefined) and A (ASCII, always null terminated). The 'count' column
obviously specifies the value count ('-' means that it is variable). All
GPS tags are optional in a JPEG or TIFF file, but the 'VersionID' tag must
be present, if the GPS IFD is present (a default 'VersionID' = (2,2,0,0),
i.e. v.2.2, is automatically added by this module if necessary).
Hexadecimal code count notes
| Tag name type | |
| | | | |
00 GPSVersionID B 4 mandatory
01 GPSLatitudeRef A 2 (see note 1)
02 GPSLatitude R 3 (see note 2)
03 GPSLongitudeRef A 2 (see note 1)
04 GPSLongitude R 3 (see note 2)
05 GPSAltitudeRef B 1 0 (sea level) or 1 (absolute)
06 GPSAltitude R 1 in metres
07 GPSTimeStamp R 3 hours, minutes and seconds
08 GPSSatellites A - satellites used for measurement
09 GPSStatus A 2 'A' (in progr.) or 'V' (interop.)
0a GPSMeasureMode A 2 '2' (2-dim) or '3' (3-dim)
0b GPSDOP R 1 data degree of precision
0c GPSSpeedRef A 2 (see note 3)
0d GPSSpeed R 1 speed of the GPS receiver
0e GPSTrackRef A 2 (see note 4)
0f GPSTrack R 1 (see note 5)
10 GPSImgDirectionRef A 2 (see note 4)
11 GPSImgDirection R 1 (see note 5)
12 GPSMapDatum A - geodetic survey data
13 GPSDestLatitudeRef A 2 (see note 1)
14 GPSDestLatitude R 3 (see note 2)
15 GPSDestLongitudeRef A 2 (see note 1)
16 GPSDestLongitude R 3 (see note 2)
17 GPSDestBearingRef A 2 (see note 4)
18 GPSDestBearing R 1 (see note 5)
19 GPSDestDistanceRef A 2 (see note 3)
1a GPSDestDistance R 1 distance to the destination point
1b GPSProcessingMethod U - location finding (see note 6)
1c GPSAreaInformation U - name of the GPS area (see note 6)
1d GPSDateStamp A 11 (see note 7)
1e GPSDifferential S 1 0 (without) or 1 (with) diff.corr.
Notes:
1) A latitude or longitude reference specifies a sign for another
(related) latitude or longitude value tag. A latitude reference can be
only 'N' (for North) or 'S' (for South); a longitude reference can be
only 'E' (for East) or 'W' (for West).
2) A latitude or a longitude is stored as a sequence of three rational
numbers (each rational number is the ratio of two unsigned long
integers), representing degrees, minutes and seconds. A typical format
is (dd/1, mm/1, ss/1). Sometimes, seconds are dropped in favour of
fractions of minutes (usually with two decimal places); in this case
the format is (dd/1, mmmm/100, 0/1). Latitudes are limited to the
interval [0,90], while longitudes to [0,180].
3) A "speed (distance) reference" is the unit for the speed (distance)
value stored in another (related) tag. The only allowed values are 'K'
(for Km/h or Km), 'M' (for miles/h or miles) or 'N' (knots). Let us
appreciate the fact that knot in English is both a unit of speed (one
nautical mile per hour) and of distance (one nautical mile).
4) A direction reference specifies how to interpret a following direction
value. Only two references are possible: 'T' (for the true direction)
or 'M' (for the magnetic direction).
5) A direction (of the pointed image, of the movement of the GPS
receiver, ecc ...) is a decimal number specifying an angle. The
allowed range is between 0.00 and 359.99.
6) The processing method and the area information are character strings,
whose first character specifies the character code used: this is the
first character of the 8-byte character code identification in the
'UserComment' tag in the SubIFD, so 'A' means ASCII, 'J' means JIS,
'U' means Unicode and a null character means undefined. Since the type
is not ASCII, null termination is not required.
7) A date tag value is a null terminated string of the form "YYYY:MM:DD"
(note the colon signs). [I currently allow only years after 1800].
=head1 Valid tags for Photoshop-style APP13 data
The structure of a Photoshop-style APP13 segment is introduced in section
L<Image::MetaData::JPEG::Structures/Structure of a Photoshop-style APP13
segment>.
=head2 Non-IPTC data (visual rendering - Photoshop variables)
This section contains only the list of valid Image Resource ID's; note that
not all file formats use all ID's, and some information may be stored
somewhere else in the file. In the following list 'PS' stands for
Photoshop, and 'Pstring' for Pascal string:
Hexadecimal code notes
| Tag name |
| | |
3e8 Photoshop2Info [obsolete] (PS.2.0) General information
3e9 MacintoshPrintInfo [optional] Macintosh print manager info
3eb Photoshop2ColorTable [obsolete] (PS.2.0) Indexed colour table
3ed ResolutionInfo see appendix A in Photoshop SDK
3ee AlphaChannelsNames as a series of Pstrings
3ef DisplayInfo see appendix A in Photoshop SDK
3f0 PStringCaption [optional] the caption, as a Pstring
3f1 BorderInformation border width and units
3f2 BackgroundColor see additional Adobe information
3f3 PrintFlags labels, crop marks, colour bars, ecc...
3f4 BWHalftoningInfo Gray-scale and multich. half-toning info
3f5 ColorHalftoningInfo Colour half-toning information
3f6 DuotoneHalftoningInfo Duo-tone half-toning information
3f7 BWTransferFunc Gray-scale and multich. transfer function
3f8 ColorTransferFuncs Colour transfer function
3f9 DuotoneTransferFuncs Duo-tone transfer function
3fa DuotoneImageInfo Duo-tone image information
3fb EffectiveBW effective black and white values
3fc ObsoletePhotoshopTag1 [obsolete] ??
3fd EPSOptions Encapsulated Postscript options
3fe QuickMaskInfo channel ID plus initial state flag
3ff ObsoletePhotoshopTag2 [obsolete] ??
400 LayerStateInfo index of target layer (0 means bottom)
401 WorkingPathInfo should not be saved to the file
402 LayersGroupInfo for grouping layers together
403 ObsoletePhotoshopTag3 [obsolete] ??
404 IPTC/NAA see L</Valid tags for IPTC data>
405 RawImageMode image mode for raw format files
406 JPEGQuality [private]
408 GridGuidesInfo see additional Adobe information
409 ThumbnailResource see additional Adobe information
40a CopyrightFlag true if image is copyrighted
40b URL text string with a resource locator
40c ThumbnailResource2 see additional Adobe information
40d GlobalAngle global lighting angle for effects layer
40e ColorSamplersResource see additional Adobe information
40f ICCProfile see notes from Internat. Color Consortium
410 Watermark one byte
411 ICCUntagged 1 means intentionally untagged
412 EffectsVisible 1 byte to show/hide all effects layers
413 SpotHalftone version, length and data
414 IDsBaseValue base value for new layers ID's
415 UnicodeAlphaNames length plus Unicode string
416 IndexedColourTableCount (PS.6.0) 2 bytes
417 TransparentIndex (PS.6.0) 2 bytes
419 GlobalAltitude (PS.6.0) 4 bytes
41a Slices (PS.6.0) see additional Adobe info
41b WorkflowURL (PS.6.0) 4 bytes length + Unicode string
41c JumpToXPEP (PS.6.0) see additional Adobe info
41d AlphaIdentifiers (PS.6.0) 4*(n+1) bytes
41e URLList (PS.6.0) structured Unicode URL's
421 VersionInfo (PS.6.0) see additional Adobe info
7d0-bb6 PathInfo_%3x see additional Adobe info (saved path)
bb7 ClippingPathName see additional Adobe info
2710 PrintFlagsInfo see additional Adobe info
=head2 IPTC data (Editorial information and envelope record)
The structure of an IPTC stream is introduced in section
L<Image::MetaData::JPEG::Structures/Structure of an IPTC data block>. This
section contains only the list of valid IPTC tags. Since the use of APP13
for IPTC information in a JPEG picture is not a real standard, it is not
clear which subset of IPTC should be considered valid; my current guess is
that only editorial IPTC datasets (2:xx) and, more rarely, some envelope
datasets (1:xx, which are however needed for non ASCII character sets) are
found. Numeric tag values (record keys), in the first column, are in
decimal notation, and they are followed by tag names in the second
column. The presence of 'N' in the third column means that the record is
non-repeatable (i.e., there should not be two such records in the
file). The following number or range in square brackets indicates valid
lengths for the record data field. The final comment specifies additional
format constraints, sometimes in natural language: "/regex/" means that the
string must match the regular expression regex; "invalid" means that this
valid IPTC tag is not used in JPEG pictures; other formats are specified in
the notes. Note that IPTC strings are stored in records with an explicit
length, so they do not need the final null character (they are not
C-strings).
Decimal code size notes
| Tag name repeatable | |
| | | | |
-------------------------------------------------------------------------
1:xx datasets from the envelope record (seldom used)
-------------------------------------------------------------------------
0 ModelVersion N [ 2, ] binary, always 4 in JPEGs?
5 Destination [1-1024] word (see note 1)
20 FileFormat N [ 2 ] invalid, binary
22 FileFormatVersion N [ 2 ] invalid, binary (see 1:20)
30 ServiceIdentifier N [ <=10 ] word (see note 1)
40 EnvelopeNumber N [ 8 ] invalid, /\d{8}/
50 ProductID [ <=32 ] word (see note 1)
60 EnvelopePriority N [ 1 ] invalid, /[1-9]/
70 DataSent N [ 8 ] invalid, date (see note 2)
80 TimeSent N [ 11 ] invalid, time (see note 3)
90 CodedCharacterSet N [ <=32 ] character set (see note 4)
100 UNO N [14-80 ] invalid (eternal identifier)
120 ARMIdentifier N [ 2 ] invalid, binary
122 ARMVersion N [ 2 ] invalid, binary
-------------------------------------------------------------------------
2:xx datasets from the application record (editorial tags)
-------------------------------------------------------------------------
0 RecordVersion N [ 2 ] binary, always 2 in JPEGs ?
3 ObjectTypeReference N [ 3-67 ] /\d{2}?:[\w\s]{0,64}?/
4 ObjectAttributeReference [ 4-68 ] /\d{3}?:[\w\s]{0,64}?/
5 ObjectName N [ <=64 ] line (see note 5)
7 EditStatus N [ <=64 ] line (see note 5)
8 EditorialUpdate N [ 2 ] /01/
10 Urgency N [ 1 ] /[1-8]/
12 SubjectReference [13-236] complicated, see note 7
15 Category N [ <=3 ] /[a-zA-Z]{1,3}?/
20 SupplementalCategory [ <=32 ] line (see note 5)
22 FixtureIdentifier N [ <=32 ] word (see note 1)
25 Keywords [ <=64 ] line (see note 5)
26 ContentLocationCode [ 3 ] /[A-Z]{3}/
27 ContentLocationName [ <=64 ] line (see note 5)
30 ReleaseDate N [ 8 ] date (see note 2)
35 ReleaseTime N [ 11 ] time (see note 3)
37 ExpirationDate N [ 8 ] date (see note 2)
38 ExpirationTime N [ 11 ] time (see note 3)
40 SpecialInstructions N [ <=256] line (see note 5)
42 ActionAdvised N [ 2 ] /0[1-4]/
45 ReferenceService [ 10 ] invalid (see 1:30)
47 ReferenceDate [ 8 ] invalid (see 1:70)
50 ReferenceNumber [ 8 ] invalid (see 1:40)
55 DateCreated N [ 8 ] date (see note 2)
60 TimeCreated N [ 11 ] time (see note 3)
62 DigitalCreationDate N [ 8 ] date (see note 2)
63 DigitalCreationTime N [ 11 ] time (see note 3)
65 OriginatingProgram N [ 32 ] line (see note 5)
70 ProgramVersion N [ <=10 ] line (see note 5)
75 ObjectCycle N [ 1 ] /a|p|b/
80 ByLine [ <=32 ] line (see note 5)
85 ByLineTitle [ <=32 ] line (see note 5)
90 City N [ <=32 ] line (see note 5)
92 SubLocation N [ <=32 ] line (see note 5)
95 Province/State N [ <=32 ] line (see note 5)
100 Country/PrimaryLocationCode N [ 3 ] /[A-Z]{3}?/
101 Country/PrimaryLocationName N [ <=64 ] line (see note 5)
103 OriginalTransmissionReference N [ <=32 ] line (see note 5)
105 Headline N [ <=256] line (see note 5)
110 Credit N [ <=32 ] line (see note 5)
115 Source N [ <=32 ] line (see note 5)
116 CopyrightNotice N [ <=128] line (see note 5)
118 Contact [ <=128] line (see note 5)
120 Caption/Abstract N [<=2000] line with CR and LF
122 Writer/Editor [ <=32 ] line (see note 5)
125 RasterizedCaption N [ 7360 ] binary data (460x128 PBM)
130 ImageType N [ 2 ] /[0-49][WYMCKRGBTFLPS]/
131 ImageOrientation N [ 1 ] /P|L|S/
135 LanguageIdentifier N [ 2-3 ] /[a-zA-Z]{2,3}?/
150 AudioType N [ 2 ] /[012][ACMQRSTVW]/
151 AudioSamplingRate N [ 6 ] /\d{6}?/
152 AudioSamplingResolution N [ 2 ] /\d{2}?/
153 AudioDuration N [ 6 ] duration (see note 6)
154 AudioOutcue N [ <=64 ] line (see note 5)
200 ObjDataPreviewFileFormat N [ 2 ] invalid, binary (see 1:20)
201 ObjDataPreviewFileFormatVer N [ 2 ] invalid, binary (see 1:22)
202 ObjDataPreviewData N [<=256000] invalid, binary
Notes:
1) A "word" is made of elements of what the IPTC standard calls "graphic
characters" set, i.e. all characters that have visual representation.
Control codes, the space character and the DEL character are NOT
graphic characters. Note that the visual representation of a graphic
character depends upon the character set invoked at the time of
evaluation. A "word" is matched by the following regular expression:
/^[^\000-\040\177]*$/.
2) A date is stored, in conformity to the ISO 8601 standard, as the eight
character string 'CCYYMMDD', e.g., '19890317' indicates March 17th
1989. A date string is matched by the following regular expression:
/\d{4}(0\d|1[0-2])([0-2]\d|3[01])/. [Currently, I allow only years
after 1800; but 'DateCreated' has no limitation since it refers to the
creation date of the photographed object, not to the creation of the
photo itself].
3) A time is stored, in conformity to the ISO 8601 standard, as the
eleven character string 'HHMMSS+/-HHMM', e.g., '090000-0500' indicates
9AM, 5 hours behind the coordinated universal time. A time string is
matched by the following regular expression:
/([01]\d|2[0-3])[0-5]\d[0-5]\d[\+-]([01]\d|2[0-3])[0-5]\d/.
4) This dataset selects a character set, for use in character oriented
datasets in records 2-6, according to the "International Register of
Coded Character Sets" (ISO/IEC 2022 and ISO/IEC 2375, see for instance
L<http://www.itscj.ipsj.or.jp/ISO-IR/>), and typically consist of the
escape control character followed by one or more graphic characters.
For instance, "\033/A" refers to ISO-8859-1 (latin-1) and "\033%G" refers
to UTF-8 (a Unicode encoding).
5) A "line" is made of graphic characters (see note 1) and space. This is
matched by the following regular expression: /^[^\000-\037\177]*$/.
6) A "duration" is stored like a "time", but there is no time zone spec;
this means that the string is only six characters wide (see also note 3).
7) The complicated regular expression for the SubjectReference is the
following: /[$validchar]{1,32}?:[01]\d{7}?(:[$validchar\s]{0,64}?){3}?/,
where $validchar is '\040-\051\053-\071\073-\076\100-\176'.
=head1 AUTHOR
Stefano Bettelli, B<bettelli@cpan.org>
=head1 COPYRIGHT AND LICENSE
Copyright (C) 2004,2005,2006 by Stefano Bettelli
This library is free software; you can redistribute it and/or modify it
under the terms of the GNU L<General Public License|perlgpl>. See the
COPYING and LICENSE file for the license terms.
=head1 SEE ALSO
The main documentation page for the L<Image::MetaData::JPEG> module.
=cut
### Local Variables: ***
### mode:perl ***
### fill-column:75 ***
### ispell-dictionary: "british" ***
### End: ***
|