1Image::ExifTool(3) User Contributed Perl Documentation Image::ExifTool(3)
2
3
4
6 Image::ExifTool - Read and write meta information
7
9 use Image::ExifTool qw(:Public);
10
11 # ---- Simple procedural usage ----
12
13 # Get hash of meta information tag names/values from an image
14 $info = ImageInfo('a.jpg');
15
16 # ---- Object-oriented usage ----
17
18 # Create a new Image::ExifTool object
19 $exifTool = new Image::ExifTool;
20
21 # Extract meta information from an image
22 $exifTool->ExtractInfo($file, \%options);
23
24 # Get list of tags in the order they were found in the file
25 @tagList = $exifTool->GetFoundTags('File');
26
27 # Get the value of a specified tag
28 $value = $exifTool->GetValue($tag, $type);
29
30 # Get a tag description
31 $description = $exifTool->GetDescription($tag);
32
33 # Get the group name associated with this tag
34 $group = $exifTool->GetGroup($tag, $family);
35
36 # Set a new value for a tag
37 $exifTool->SetNewValue($tag, $newValue);
38
39 # Write new meta information to a file
40 $success = $exifTool->WriteInfo($srcfile, $dstfile);
41
42 # ...plus a host of other useful methods...
43
45 ExifTool provides an extensible set of perl modules to read and write
46 meta information in a wide variety of files, including the maker note
47 information of many digital cameras by various manufacturers such as
48 Canon, Casio, FujiFilm, GE, HP, JVC/Victor, Kodak, Leaf,
49 Minolta/Konica-Minolta, Nikon, Olympus/Epson, Panasonic/Leica,
50 Pentax/Asahi, Reconyx, Ricoh, Samsung, Sanyo, Sigma/Foveon and Sony.
51
52 Below is a list of file types and meta information formats currently
53 supported by ExifTool (r = read, w = write, c = create):
54
55 File Types
56 ------------+-------------+-------------+-------------+------------
57 3FR r | DVB r | M4A/V r | PBM r/w | RWZ r
58 3G2 r | DYLIB r | MEF r/w | PDF r/w | RM r
59 3GP r | EIP r | MIE r/w/c | PEF r/w | SO r
60 ACR r | EPS r/w | MIFF r | PFA r | SR2 r/w
61 AFM r | ERF r/w | MKA r | PFB r | SRF r
62 AI r/w | EXE r | MKS r | PFM r | SRW r/w
63 AIFF r | EXIF r/w/c | MKV r | PGF r | SVG r
64 APE r | F4A/V r | MNG r/w | PGM r/w | SWF r
65 ARW r/w | FLA r | MOS r/w | PICT r | THM r/w
66 ASF r | FLAC r | MOV r | PMP r | TIFF r/w
67 AVI r | FLV r | MP3 r | PNG r/w | TTC r
68 BMP r | FPX r | MP4 r | PPM r/w | TTF r
69 BTF r | GIF r/w | MPC r | PPT r | VRD r/w/c
70 CHM r | GZ r | MPG r | PPTX r | VSD r
71 COS r | HDP r/w | MPO r/w | PS r/w | WAV r
72 CR2 r/w | HTML r | MQV r | PSB r/w | WDP r/w
73 CRW r/w | ICC r/w/c | MRW r/w | PSD r/w | WEBP r
74 CS1 r/w | IIQ r/w | MXF r | PSP r | WEBM r
75 DCM r | IND r/w | NEF r/w | QTIF r | WMA r
76 DCP r/w | ITC r | NRW r/w | RA r | WMV r
77 DCR r | J2C r | NUMBERS r | RAF r/w | X3F r/w
78 DFONT r | JNG r/w | ODP r | RAM r | XCF r
79 DIVX r | JP2 r/w | ODS r | RAR r | XLS r
80 DJVU r | JPEG r/w | ODT r | RAW r/w | XLSX r
81 DLL r | K25 r | OGG r | RIFF r | XMP r/w/c
82 DNG r/w | KDC r | OGV r | RSRC r | ZIP r
83 DOC r | KEY r | ORF r/w | RTF r |
84 DOCX r | LNK r | OTF r | RW2 r/w |
85 DV r | M2TS r | PAGES r | RWL r/w |
86
87 Meta Information
88 ----------------------+----------------------+---------------------
89 EXIF r/w/c | CIFF r/w | Ricoh RMETA r
90 GPS r/w/c | AFCP r/w | Picture Info r
91 IPTC r/w/c | Kodak Meta r/w | Adobe APP14 r
92 XMP r/w/c | FotoStation r/w | MPF r
93 MakerNotes r/w/c | PhotoMechanic r/w | Stim r
94 Photoshop IRB r/w/c | JPEG 2000 r | APE r
95 ICC Profile r/w/c | DICOM r | Vorbis r
96 MIE r/w/c | Flash r | SPIFF r
97 JFIF r/w/c | FlashPix r | DjVu r
98 Ducky APP12 r/w/c | QuickTime r | M2TS r
99 PDF r/w/c | Matroska r | PE/COFF r
100 PNG r/w/c | GeoTIFF r | AVCHD r
101 Canon VRD r/w/c | PrintIM r | ZIP r
102 Nikon Capture r/w/c | ID3 r | (and more)
103
105 User-defined tags can be added via the ExifTool configuration file, or
106 by defining the %Image::ExifTool::UserDefined hash before calling any
107 ExifTool methods. See "ExifTool_config" in the ExifTool distribution
108 for more details.
109
110 By default ExifTool looks for a configuration file named
111 ".ExifTool_config" first in your home directory, then in the directory
112 of the application script, but a different file may be specified by
113 setting the ExifTool "configFile" variable before using
114 Image::ExifTool. For example:
115
116 BEGIN { $Image::ExifTool::configFile = '/Users/phil/myconfig.cfg' }
117 use Image::ExifTool;
118
119 or the configuration feature may be disabled by setting "configFile" to
120 an empty string:
121
122 BEGIN { $Image::ExifTool::configFile = '' }
123 use Image::ExifTool;
124
126 Exports nothing by default, but "ImageInfo" and all static methods may
127 be exported with the ":Public" export list.
128
130 All ExifTool features are accessed through the methods of the public
131 interface listed below. Other Image::ExifTool methods and modules
132 should not be accessed directly because their interface may change with
133 future versions.
134
135 None of these methods should ever die or issue warnings to STDERR if
136 called with the proper arguments (with the exception of "SetNewValue"
137 which may send an error message to STDERR, but only when called in
138 scalar context). Error and warning messages that occur during
139 processing are stored in the values of the Error and Warning tags, and
140 are accessible via the "GetValue" method.
141
142 new
143 Creates a new ExifTool object.
144
145 $exifTool = new Image::ExifTool;
146
147 Note that ExifTool uses AUTOLOAD to load non-member methods, so any
148 class using Image::ExifTool as a base class must define an AUTOLOAD
149 which calls Image::ExifTool::DoAutoLoad(). ie)
150
151 sub AUTOLOAD
152 {
153 Image::ExifTool::DoAutoLoad($AUTOLOAD, @_);
154 }
155
156 ImageInfo
157 Read image file and return meta information. This is the one step
158 function for retrieving meta information from an image. Internally,
159 "ImageInfo" calls "ExtractInfo" to extract the information, "GetInfo"
160 to generate the information hash, and "GetTagList" for the returned tag
161 list.
162
163 # return meta information for 2 tags only (procedural)
164 $info = ImageInfo($filename, $tag1, $tag2);
165
166 # return information about an open image file (object-oriented)
167 $info = $exifTool->ImageInfo(\*FILE);
168
169 # return information from image data in memory for specified tags
170 %options = (PrintConv => 0);
171 @tagList = qw(filename imagesize xmp:creator exif:* -ifd1:*);
172 $info = ImageInfo(\$imageData, \@tagList, \%options);
173
174 # extract information from an embedded thumbnail image
175 $info = ImageInfo('image.jpg', 'thumbnailimage');
176 $thumbInfo = ImageInfo($$info{ThumbnailImage});
177
178 Inputs:
179 "ImageInfo" is very flexible about the input arguments, and
180 interprets them based on their type. It may be called with one or
181 more arguments. The one required argument is either a SCALAR (the
182 image file name), a file reference (a reference to the image file)
183 or a SCALAR reference (a reference to the image in memory). Other
184 arguments are optional. The order of the arguments is not
185 significant, except that the first SCALAR is taken to be the file
186 name unless a file reference or scalar reference comes earlier in
187 the argument list.
188
189 Below is an explanation of how the "ImageInfo" function arguments
190 are interpreted:
191
192 ExifTool ref
193 "ImageInfo" may be called with an ExifTool object if desired.
194 The advantage of using the object-oriented form is that the
195 options may be set before calling "ImageInfo", and the object
196 may be used afterward to access member functions. Must be the
197 first argument if used.
198
199 SCALAR
200 The first scalar argument is taken to be the file name unless
201 an earlier argument specified the image data via a file
202 reference (file ref) or data reference (SCALAR ref). The
203 remaining scalar arguments are names of tags for requested
204 information. All tags are returned if no tags are specified.
205
206 Tag names are case-insensitive and may be prefixed by optional
207 group names separated by colons. A group name may begin with a
208 family number (ie. '1IPTC:Keywords'), to restrict matches to a
209 specific family. In the tag name, a '?' matches any single
210 character and a '*' matches zero or more characters. Thus
211 'GROUP:*' represents all tags in a specific group. Wildcards
212 may not be used in group names, with the exception that a group
213 name of '*' may be used to extract all available instances of a
214 tag regardless of the "Duplicates" setting (ie.
215 '*:WhiteBalance'). Multiple groups may be specified (ie.
216 'EXIF:Time:*' extracts all EXIF Time tags). And finally, a
217 leading '-' indicates a tag to be excluded (ie. '-IFD1:*'), or
218 a trailing '#' causes the ValueConv value to be returned for
219 this tag.
220
221 Note that keys in the returned information hash and elements of
222 the returned tag list are not necessarily the same as these tag
223 names because group names are removed, the case may be changed,
224 and an instance number may be added. For this reason it is
225 best to use either the keys of the returned hash or the
226 elements of the tag array when accessing the tag values.
227
228 See Image::ExifTool::TagNames for a complete list of ExifTool
229 tag names.
230
231 File ref
232 A reference to an open image file. If you use this method (or
233 a SCALAR reference) to access information in an image, the
234 FileName and Directory tags will not be returned. (Also, the
235 FileSize, FileModifyDate and FilePermissions tags will not be
236 returned unless it is a plain file.) Image processing begins
237 at the current file position, and on return the file position
238 is unspecified. May be either a standard filehandle, or a
239 reference to a File::RandomAccess object. Note that the file
240 remains open and must be closed by the caller after "ImageInfo"
241 returns.
242
243 [Advanced: To allow a non-rewindable stream (ie. a network
244 socket) to be re-read after processing with ExifTool, first
245 wrap the file reference in a File::RandomAccess object, then
246 pass this object to "ImageInfo". The File::RandomAccess object
247 will buffer the file if necessary, and may be used to re-read
248 the file after "ImageInfo" returns.]
249
250 SCALAR ref
251 A reference to image data in memory.
252
253 ARRAY ref
254 Reference to a list of tag names. On entry, any elements in
255 the list are added to the list of requested tags. Tags with
256 names beginning with '-' are excluded. On return, this list is
257 updated to contain an ordered list of tag keys for the returned
258 information.
259
260 There will be 1:1 correspondence between the requested tags and
261 the returned tag keys only if the "Duplicates" option is 0 and
262 "Sort" is 'Input'. (With "Duplicates" enabled, there may be
263 more entries in the returned list of tag keys, and with other
264 "Sort" settings the entries may not be in the same order as
265 requested.)
266
267 HASH ref
268 Reference to a hash containing the options settings. See
269 "Options" documentation below for a list of available options.
270 Options specified as arguments to "ImageInfo" take precedence
271 over "Options" settings.
272
273 Return Values:
274 "ImageInfo" returns a reference to a hash of tag key/value pairs.
275 The tag keys are identifiers, which are similar to the tag names
276 but may have an embedded instance number if multiple tags with the
277 same name were extracted from the image. Many of the ExifTool
278 functions require a tag key as an argument. Use "GetTagName
279 [static]" to get the tag name for a given tag key. Note that the
280 case of the tag names may not be the same as requested. Here is a
281 simple example to print out the information returned by
282 "ImageInfo":
283
284 foreach (sort keys %$info) {
285 print "$_ => $$info{$_}\n";
286 }
287
288 Values of the returned hash are usually simple scalars, but a
289 scalar reference is used to indicate binary data and an array
290 reference may be used to indicate a list. Also, a hash reference
291 may be returned if the "Struct" option is used. Lists of values
292 are joined by commas into a single string only if the PrintConv
293 option is enabled and the List option is disabled (which are the
294 defaults). Note that binary values are not necessarily extracted
295 unless specifically requested or the Binary option is set. If not
296 extracted the value is a reference to a string of the form "Binary
297 data ##### bytes".
298
299 The code below gives an example of how to handle these return
300 values, as well as illustrating the use of other ExifTool
301 functions:
302
303 use Image::ExifTool;
304 my $exifTool = new Image::ExifTool;
305 $exifTool->Options(Unknown => 1);
306 my $info = $exifTool->ImageInfo('a.jpg');
307 my $group = '';
308 my $tag;
309 foreach $tag ($exifTool->GetFoundTags('Group0')) {
310 if ($group ne $exifTool->GetGroup($tag)) {
311 $group = $exifTool->GetGroup($tag);
312 print "---- $group ----\n";
313 }
314 my $val = $info->{$tag};
315 if (ref $val eq 'SCALAR') {
316 if ($$val =~ /^Binary data/) {
317 $val = "($$val)";
318 } else {
319 my $len = length($$val);
320 $val = "(Binary data $len bytes)";
321 }
322 }
323 printf("%-32s : %s\n", $exifTool->GetDescription($tag), $val);
324 }
325
326 Notes:
327 ExifTool returns all values as byte strings of encoded characters.
328 Perl wide characters are not used. See "CHARACTER ENCODINGS" for
329 details about the encodings.
330
331 As well as tags representing information extracted from the image,
332 the following tags generated by ExifTool may be returned:
333
334 ExifToolVersion - The ExifTool version number.
335
336 Error - An error message if the image could not be processed.
337
338 Warning - A warning message if problems were encountered while
339 processing the image.
340
341 Options
342 Get/set ExifTool options. This function can be called to set the
343 default options for an ExifTool object. Options set this way are in
344 effect for all function calls but may be overridden by options passed
345 as arguments to some functions.
346
347 The initial default options are obtained from values in the
348 %Image::ExifTool::UserDefined::Options hash if it exists. See the
349 .ExifTool_config file in the full ExifTool distribution for details.
350
351 # exclude the 'OwnerName' tag from returned information
352 $exifTool->Options(Exclude => 'OwnerName');
353
354 # only get information in EXIF or MakerNotes groups
355 $exifTool->Options(Group0 => ['EXIF', 'MakerNotes']);
356
357 # ignore information from IFD1
358 $exifTool->Options(Group1 => '-IFD1');
359
360 # sort by groups in family 2, and extract unknown tags
361 $exifTool->Options(Sort => 'Group2', Unknown => 1);
362
363 # reset DateFormat option
364 $exifTool->Options(DateFormat => undef);
365
366 # do not extract duplicate tag names
367 $oldSetting = $exifTool->Options(Duplicates => 0);
368
369 # get current Verbose setting
370 $isVerbose = $exifTool->Options('Verbose');
371
372 Inputs:
373 0) ExifTool object reference.
374
375 1) Option parameter name.
376
377 2) [optional] Option parameter value (may be undef to clear
378 option).
379
380 3-N) [optional] Additional parameter/value pairs.
381
382 Option Parameters:
383 Binary
384 Flag to extract the value data for all binary tags. Tag values
385 representing large binary data blocks (ie. ThumbnailImage) are
386 not necessarily extracted unless this option is set or the tag
387 is specifically requested by name. Default is 0.
388
389 ByteOrder
390 The byte order for newly created EXIF segments when writing.
391 Note that if EXIF information already exists, the existing
392 order is maintained. Valid values are 'MM', 'II' and undef.
393 If ByteOrder is not defined (the default), then the maker note
394 byte order is used (if they are being copied), otherwise big-
395 endian ('MM') order is assumed. This can also be set via the
396 ExifByteOrder tag, but the ByteOrder option takes precedence if
397 both are set.
398
399 Charset
400 Character set for encoding character strings passed to/from
401 ExifTool with code points above U+007F. Default is UTF8.
402 Valid values are listed below, case is not significant:
403
404 Value Alias(es) Description
405 ----------- --------------- ----------------------------------
406 UTF8 cp65001, UTF-8 UTF-8 characters
407 Latin cp1252, Latin1 Windows Latin1 (West European)
408 Latin2 cp1250 Windows Latin2 (Central European)
409 Cyrillic cp1251, Russian Windows Cyrillic
410 Greek cp1253 Windows Greek
411 Turkish cp1254 Windows Turkish
412 Hebrew cp1255 Windows Hebrew
413 Arabic cp1256 Windows Arabic
414 Baltic cp1257 Windows Baltic
415 Vietnam cp1258 Windows Vietnamese
416 Thai cp874 Windows Thai
417 MacRoman cp10000, Roman Macintosh Roman
418 MacLatin2 cp10029 Macintosh Latin2 (Central Europe)
419 MacCyrillic cp10007 Macintosh Cyrillic
420 MacGreek cp10006 Macintosh Greek
421 MacTurkish cp10081 Macintosh Turkish
422 MacRomanian cp10010 Macintosh Romanian
423 MacIceland cp10079 Macintosh Icelandic
424 MacCroatian cp10082 Macintosh Croatian
425
426 Note that this option affects some types of information when
427 reading/writing the file and other types when getting/setting
428 tag values, so it must be defined for both types of access.
429
430 CharsetID3
431 Character encoding to assume for ID3v1 strings. By the
432 specification ID3v1 strings should be encoded in ISO 8859-1
433 (essentially Latin), but some applications may use local
434 encoding instead. Default is Latin.
435
436 CharsetIPTC
437 Fallback IPTC character set to assume if IPTC information
438 contains no CodedCharacterSet tag. Possible values are the
439 same as the "Charset" option. Default is Latin.
440
441 Note that this option affects some types of information when
442 reading/writing the file and other types when getting/setting
443 tag values, so it must be defined for both types of access.
444
445 CharsetPhotoshop
446 Character encoding to assume for Photoshop IRB resource names.
447 Default is Latin.
448
449 Compact
450 Flag to write compact output. Default is 0. The XMP
451 specification suggests that the data be padded with blanks to
452 allow in-place editing. With this flag set the 2kB of padding
453 is not written. Note that this only effects embedded XMP since
454 padding is never written for stand-alone XMP files.
455
456 Composite
457 Flag to calculate Composite tags automatically. Default is 1.
458
459 Compress
460 Flag to write new values in compressed format if possible. Has
461 no effect unless Compress::Zlib is installed. Default is 0.
462
463 CoordFormat
464 Format for printing GPS coordinates. This is a printf format
465 string with specifiers for degrees, minutes and seconds in that
466 order, however minutes and seconds may be omitted. For
467 example, the following table gives the output for the same
468 coordinate using various formats:
469
470 CoordFormat Example Output
471 ------------------- ------------------
472 q{%d deg %d' %.2f"} 54 deg 59' 22.80" (default for reading)
473 q{%d %d %.8f} 54 59 22.80000000 (default for copying)
474 q{%d deg %.4f min} 54 deg 59.3800 min
475 q{%.6f degrees} 54.989667 degrees
476
477 Note: To avoid loss of precision, the default coordinate
478 format is different when copying tags with
479 "SetNewValuesFromFile".
480
481 DateFormat
482 Format for printing date/time values. See "strftime" in the
483 POSIX package for details about the format string. The default
484 is similar to a format of "%Y:%m:%d %H:%M:%S". If date can not
485 be converted, value is left unchanged unless the StrictDate
486 option is set. Timezones are ignored.
487
488 Duplicates
489 Flag to return values from tags with duplicate names when
490 extracting information. Default is 1.
491
492 Escape
493 Escape special characters in extracted values for HTML or XML.
494 Also unescapes HTML or XML character entities in input values
495 passed to "SetNewValue". Valid settings are 'HTML', 'XML' or
496 undef. Default is undef.
497
498 Exclude
499 Exclude specified tags from tags extracted from an image. The
500 option value is either a tag name or reference to a list of tag
501 names to exclude. The case of tag names is not significant.
502 This option is ignored for specifically requested tags. Tags
503 may also be excluded by preceeding their name with a '-' in the
504 arguments to "ImageInfo".
505
506 ExtractEmbedded
507 Flag to extract information from embedded documents in EPS and
508 PDF files, embedded MPF images in JPEG and MPO files, streaming
509 metadata in AVCHD videos, and the resource fork of Mac OS
510 files. Default is 0.
511
512 FastScan
513 Flag to increase speed of extracting information from JPEG
514 images. With this option set to 1, ExifTool will not scan to
515 the end of a JPEG image to check for an AFCP, CanonVRD,
516 FotoStation, PhotoMechanic, MIE or PreviewImage trailer. This
517 also stops the parsing after the first comment in GIF images,
518 and at the audio/video data with RIFF-format files (AVI, WAV,
519 etc), so any trailing metadata (ie. XMP written by some
520 utilities) may be missed. When combined with the ScanForXMP
521 option, prevents scanning for XMP in recognized file types.
522 With a value of 2, ExifTool will also avoid extracting any EXIF
523 MakerNote information. Default is 0.
524
525 FixBase
526 Fix maker notes base offset. A common problem with image
527 editing software is that offsets in the maker notes are not
528 adjusted properly when the file is modified. This may cause
529 the wrong values to be extracted for some maker note entries
530 when reading the edited file. FixBase specifies an integer
531 value to be added to the maker notes base offset. It may also
532 be set to the empty string ('') for ExifTool will take its best
533 guess at the correct base, or undef (the default) for no base
534 adjustment.
535
536 GeoMaxIntSecs
537 Maximum interpolation time in seconds for geotagging.
538 Geotagging fails if the Geotime value lies between two fixes in
539 the same track which are separated by a number of seconds
540 greater than this. Default is 1800.
541
542 GeoMaxExtSecs
543 Maximum extrapolation time in seconds for geotagging.
544 Geotagging fails if the Geotime value lies outside a GPS track
545 by a number of seconds greater than this. Default is 1800.
546
547 GeoMaxHDOP
548 Maximum Horizontal (2D) Dilution Of Precision for geotagging.
549 GPS fixes are ignored if the HDOP is greater than this.
550 Default is undef.
551
552 GeoMaxPDOP
553 Maximum Position (3D) Dilution Of Precision for geotagging.
554 GPS fixes are ignored if the PDOP is greater than this.
555 Default is undef.
556
557 GeoMinSats
558 Minimum number of satellites for geotagging. GPS fixes are
559 ignored if the number of acquired satellites is less than this.
560 Default is undef.
561
562 Group#
563 Extract tags only for specified groups in family # (Group0
564 assumed if # not given). The option value may be a single
565 group name or a reference to a list of groups. Case is
566 significant in group names. Specify a group to be excluded by
567 preceding group name with a '-'. See "GetGroup" for a
568 description of group families, and "GetAllGroups [static]" for
569 lists of group names.
570
571 HtmlDump
572 Dump information in hex to dynamic HTML web page. The value
573 may be 0-3 for increasingly larger limits on the maximum block
574 size. Default is 0. Output goes to the file specified by the
575 TextOut option (\*STDOUT by default).
576
577 HtmlDumpBase
578 Specifies base for HTML dump offsets. If not defined, the
579 EXIF/TIFF base offset is used. Set to 0 for absolute offsets.
580 Default is undef.
581
582 IgnoreMinorErrors
583 Flag to ignore minor errors. Causes minor errors to be
584 downgraded to warnings, and minor warnings to be ignored. This
585 option is provided mainly to allow writing of files when minor
586 errors occur, but by ignoring some minor warnings the behaviour
587 of ExifTool may be changed to allow some questionable
588 operations to proceed (such as extracting thumbnail and preview
589 images even if they don't have a recognizable header). Minor
590 errors/warnings are denoted by '[minor]' at the start of the
591 message.
592
593 Lang
594 Localized language for exiftool tag descriptions, etc.
595 Available languages are given by the Image::ExifTool::Lang
596 module names (ie. 'fr'). If the specified language isn't
597 available, the option is not changed. May be set to undef to
598 select the built-in default language. Default is 'en'.
599
600 LargeFileSupport
601 Flag to indicate that 64-bit file offsets are supported on this
602 system. Default is 0.
603
604 List
605 Flag to extract lists of PrintConv values into arrays instead
606 of joining them into a string of values. The "ListSep" option
607 specifies the separator used when combining values. Default is
608 0.
609
610 ListSep
611 Separator string used to join lists of PrintConv values when
612 "List" option is not set. Default is ', '.
613
614 ListSplit
615 Regular expression used to split values of list-type tags into
616 individual items when writing. (ie. use ',\\s*' to split a
617 comma-separated list.) Default is undef.
618
619 MakerNotes
620 Option to extract MakerNotes and other writable subdirectories
621 (such as PrintIM) as a data block. Normally when the
622 MakerNotes are extracted they are rebuilt to include data
623 outside the boundaries of the original maker note data block,
624 but a value of 2 disables this feature. Possible values are:
625
626 0 - Do not extract writable subdirectories (default)
627 1 - Extract and rebuild maker notes into self-contained block
628 2 - Extract without rebuilding maker notes
629
630 MissingTagValue
631 Value for missing tags in expressions evaluated by
632 "SetNewValuesFromFile". If not set, a minor error is issued
633 for missing values, or the value is set to '' if
634 "IgnoreMinorErrors" is set. Default is undef.
635
636 Password
637 Password for processing password-protected PDF documents.
638 Ignored if a password is not required. Character encoding of
639 the password is determined by the value of the Charset option
640 at processing time. Default is undef.
641
642 PrintConv
643 Flag to enable automatic print conversion. Also enables
644 inverse print conversion for writing. Default is 1.
645
646 QuickTimeUTC
647 Flag set to assume that QuickTime date/time values are stored
648 as UTC, causing conversion to local time when they are
649 extracted. According to the QuickTime specification date/time
650 values should be UTC, but many digital cameras store local time
651 instead (presumably because they don't know the time zone), so
652 the default is 0.
653
654 ScanForXMP
655 Flag for scan all files (even unrecognized formats) for XMP
656 information unless XMP was already found in the file. When
657 combined with the FastScan option, only unrecognized file types
658 are scanned for XMP. Default is 0.
659
660 Sort
661 Specifies order to sort tags in returned list:
662
663 Input - Sort in same order as input tag arguments (default)
664 Alpha - Sort alphabetically
665 File - Sort in order that tags were found in the file
666 Group# - Sort by tag group, where # is zero or more family
667 numbers separated by colons. If # is not specified,
668 Group0 is assumed. See GetGroup for a description
669 of group families.
670
671 StrictDate
672 Flag to return undefined value for any date which can't be
673 converted when the DateFormat option is used. Default is
674 undef.
675
676 Struct
677 Flag to return XMP structures as hash references instead of
678 flattening into individual tags. If not defined (the default),
679 tags are flattened when reading (with ExtractInfo), and
680 structured when copying (with "SetNewValuesFromFile"). Has no
681 effect when writing since both flattened and structured tags
682 may always be written. Possible values are:
683
684 undef - Read flattened tags, copy structured tags (default)
685 0 - Read and copy flattened tags
686 1 - Read and copy structured tags
687
688 TextOut
689 Output file reference for Verbose and HtmlDump options.
690 Default is \*STDOUT.
691
692 Unknown
693 Flag to get the values of unknown tags. If set to 1, unknown
694 tags are extracted from EXIF (or other tagged-format)
695 directories. If set to 2, unknown tags are also extracted from
696 binary data blocks. Default is 0.
697
698 Verbose
699 Print verbose messages to file specified by TextOut option.
700 Value may be from 0 to 5 for increasingly verbose messages.
701 Default is 0. With the verbose option set, messages are
702 printed to the console as the file is parsed. Level 1 prints
703 the tag names and raw values. Level 2 adds more details about
704 the tags. Level 3 adds a hex dump of the tag data, but with
705 limits on the number of bytes dumped. Levels 4 and 5 remove
706 the dump limit on tag values and JPEG segment data
707 respectively.
708
709 Return Values:
710 The original value of the last specified parameter.
711
712 ClearOptions
713 Reset all options to their default values. Loads user-defined default
714 option values from the %Image::ExifTool::UserDefined::Options hash in
715 the .ExifTool_config file if it exists.
716
717 $exifTool->ClearOptions();
718
719 Inputs:
720 0) ExifTool object reference
721
722 Return Values:
723 (none)
724
725 ExtractInfo
726 Extract all meta information from an image.
727
728 $success = $exifTool->ExtractInfo('image.jpg', \%options);
729
730 Inputs:
731 "ExtractInfo" takes exactly the same arguments as "ImageInfo". The
732 only difference is that a list of tag keys is not returned if an
733 ARRAY reference is given. The following options are effective in
734 the call to "ExtractInfo":
735
736 Binary, Charset, CharsetID3, CharsetIPTC, Composite,
737 ExtractEmbedded, FastScan, FixBase, HtmlDump, HtmlDumpBase,
738 IgnoreMinorErrors, Lang, LargeFileSupport, MakerNotes, ScanForXMP,
739 Struct, TextOut, Unknown and Verbose.
740
741 Return Value:
742 1 if this was a recognized file format, 0 otherwise (and 'Error'
743 tag set).
744
745 GetInfo
746 "GetInfo" is called to return meta information after it has been
747 extracted from the image by a previous call to "ExtractInfo" or
748 "ImageInfo". This function may be called repeatedly after a single call
749 to "ExtractInfo" or "ImageInfo".
750
751 # get image width and hieght only
752 $info = $exifTool->GetInfo('ImageWidth', 'ImageHeight');
753
754 # get information for all tags in list (list updated with tags found)
755 $info = $exifTool->GetInfo(\@ioTagList);
756
757 # get all information in Author or Location groups
758 $info = $exifTool->GetInfo({Group2 => ['Author', 'Location']});
759
760 Inputs:
761 Inputs are the same as "ExtractInfo" and "ImageInfo" except that an
762 image can not be specified. Options in effect are:
763
764 Charset, CoordFormat, DateFormat, Duplicates, Escape, Exclude,
765 Group#, Lang, List, ListSep, PrintConv, Sort (if a tag list
766 reference is given) and StrictDate.
767
768 Return Value:
769 Reference to information hash, the same as with "ImageInfo".
770
771 WriteInfo
772 Write meta information to a file. The specified source file is
773 rewritten to the same-type destination file with new information as
774 specified by previous calls to "SetNewValue". The necessary segments
775 and/or directories are created in the destination file as required to
776 store the specified information. May be called repeatedly to write the
777 same information to additional files without the need to call
778 "SetNewValue" again.
779
780 # add information to a source file, writing output to new file
781 $exifTool->WriteInfo($srcfile, $dstfile);
782
783 # create XMP data file from scratch
784 $exifTool->WriteInfo(undef, $dstfile, 'XMP');
785
786 # overwrite file (you do have backups, right?)
787 $exifTool->WriteInfo($srcfile);
788
789 Inputs:
790 0) ExifTool object reference
791
792 1) Source file name, file reference, scalar reference, or undef to
793 create a file from scratch
794
795 2) [optional] Destination file name, file reference, scalar
796 reference, or undef to overwrite the original file
797
798 3) [optional] Destination file type
799
800 Return Value:
801 1 if file was written OK, 2 if file was written but no changes
802 made, 0 on file write error.
803
804 If an error code is returned, an Error tag is set and
805 GetValue('Error') can be called to obtain the error description. A
806 Warning tag may be set even if this routine is successful. Calling
807 WriteInfo clears any pre-existing Error and Warning tags.
808
809 $errorMessage = $exifTool->GetValue('Error');
810 $warningMessage = $exifTool->GetValue('Warning');
811
812 Notes:
813 The source file name may be undefined to create a file from scratch
814 (currently only XMP, MIE, ICC, VRD and EXIF files can be created in
815 this way -- see "CanCreate" for details). If undefined, the
816 destination file type is required unless the type can be determined
817 from the destination file name.
818
819 If a destination file name is given, the specified file must not
820 exist because an existing destination file will not be overwritten.
821 The destination file name may be undefined to overwrite the
822 original file (make sure you have backups!). In this case, if a
823 source file name is provided, a temporary file is created and
824 renamed to replace the source file if no errors occurred while
825 writing. Otherwise, if a source file reference or scalar reference
826 is used, the image is first written to memory then copied back to
827 replace the original if there were no errors.
828
829 The destination file type is only used if the source file is
830 undefined.
831
832 On Mac OS systems, the file resource fork is preserved if this
833 routine is called with a source file name.
834
835 The following ExifTool options are effective in the call to
836 "WriteInfo":
837
838 ByteOrder, Charset, CharsetID3, CharsetIPTC, Compact, Compress,
839 FixBase, IgnoreMinorErrors and Verbose.
840
841 CombineInfo
842 Combine information from more than one information hash into a single
843 hash.
844
845 $info = $exifTool->CombineInfo($info1, $info2, $info3);
846
847 Inputs:
848 0) ExifTool object reference
849
850 1-N) Information hash references
851
852 If the Duplicates option is disabled and duplicate tags exist, the
853 order of the hashes is significant. In this case, the value used is
854 the first value found as the hashes are scanned in order of input. The
855 Duplicates option is the only option that is in effect for this
856 function.
857
858 GetTagList
859 Get a sorted list of tags from the specified information hash or tag
860 list.
861
862 @tags = $exifTool->GetTagList($info, 'Group0');
863
864 Inputs:
865 0) ExifTool object reference,
866
867 1) [optional] Information hash reference or tag list reference,
868
869 2) [optional] Sort order ('File', 'Input', 'Alpha' or 'Group#').
870
871 If the information hash or tag list reference is not provided, then
872 the list of found tags from the last call to "ImageInfo",
873 "ExtractInfo" or "GetInfo" is used instead, and the result is the
874 same as if "GetFoundTags" was called. If sort order is not
875 specified, the sort order is taken from the current options
876 settings.
877
878 Return Values:
879 A list of tag keys in the specified order.
880
881 GetFoundTags
882 Get list of found tags in specified sort order. The found tags are the
883 tags for the information obtained from the most recent call to
884 "ImageInfo", "ExtractInfo" or "GetInfo" for this object.
885
886 @tags = $exifTool->GetFoundTags('File');
887
888 Inputs:
889 0) ExifTool object reference
890
891 1) [optional] Sort order ('File', 'Input', 'Alpha' or 'Group#')
892
893 If sort order is not specified, the sort order from the ExifTool
894 options is used.
895
896 Return Values:
897 A list of tag keys in the specified order.
898
899 GetRequestedTags
900 Get list of requested tags. These are the tags that were specified in
901 the arguments of the most recent call to "ImageInfo", "ExtractInfo" or
902 "GetInfo", including tags specified via a tag list reference. Shortcut
903 tags are expanded in the list.
904
905 @tags = $exifTool->GetRequestedTags();
906
907 Inputs:
908 (none)
909
910 Return Values:
911 List of requested tag keys in the same order that the tags were
912 specified. Note that this list will be empty if tags were not
913 specifically requested (ie. If extracting all tags).
914
915 GetValue
916 Get the value of a specified tag. The returned value is either the
917 human-readable (PrintConv) value, the converted machine-readable
918 (ValueConv) value, or the original raw (Raw) value. If the value type
919 is not specified, the PrintConv value is returned if the PrintConv
920 option is set, otherwise the ValueConv value is returned. The
921 PrintConv values are same as the values returned by "ImageInfo" and
922 "GetInfo" in the tag/value hash unless the PrintConv option is
923 disabled.
924
925 Tags which represent lists of multiple values (as may happen with
926 'Keywords' for example) are handled specially. In scalar context, the
927 returned PrintConv value for these tags is either a string of values or
928 a list reference (depending on the List option setting), and the
929 ValueConv value is always a list reference. But in list context,
930 "GetValue" always returns the list itself.
931
932 Note that "GetValue" requires a case-sensitive tag key as an argument.
933 To retrieve tag information based on a case-insensitive tag name (with
934 an optional group specifier), use "GetInfo" instead.
935
936 # PrintConv example
937 my $val = $exifTool->GetValue($tag);
938 if (ref $val eq 'SCALAR') {
939 print "$tag = (unprintable value)\n";
940 } else {
941 print "$tag = $val\n";
942 }
943
944 # ValueConv examples
945 my $val = $exifTool->GetValue($tag, 'ValueConv');
946 if (ref $val eq 'ARRAY') {
947 print "$tag is a list of values\n";
948 } elsif (ref $val eq 'SCALAR') {
949 print "$tag represents binary data\n";
950 } else {
951 print "$tag is a simple scalar\n";
952 }
953
954 my @keywords = $exifTool->GetValue('Keywords', 'ValueConv');
955
956 The following options are in effect when <L/GetValue> is called:
957
958 Charset, CoordFormat, DateFormat, Escape, Lang, List, ListSep,
959 PrintConv and StrictDate.
960
961 Inputs:
962 0) ExifTool object reference
963
964 1) Tag key
965
966 2) [optional] Value type, 'PrintConv', 'ValueConv', 'Both' or 'Raw'
967
968 The default value type is 'PrintConv' if the PrintConv option is
969 set, otherwise the default is 'ValueConv'. A value type of 'Both'
970 returns both ValueConv and PrintConv values as a list.
971
972 Return Values:
973 The value of the specified tag. If the tag represents a list of
974 values and the List option is disabled then PrintConv returns a
975 string of values, otherwise a reference to the list is returned in
976 scalar context. The list itself is returned in list context.
977 Values may also be scalar references to binary data, or hash
978 references if the Struct option is set.
979
980 Note: It is possible for "GetValue" to return an undefined
981 ValueConv or PrintConv value (or an empty list in list context)
982 even if the tag exists, since it is possible for these conversions
983 to yield undefined values.
984
985 SetNewValue
986 Set the new value for a tag. The routine may be called multiple times
987 to set the values of many tags before using "WriteInfo" to write the
988 new values to an image.
989
990 For list-type tags (like Keywords), either call repeatedly with the
991 same tag name for each value, or call with a reference to the list of
992 values.
993
994 # set a new value for a tag (errors go to STDERR)
995 $success = $exifTool->SetNewValue($tag, $value);
996
997 # set a new value and capture any error message
998 ($success, $errStr) = $exifTool->SetNewValue($tag, $value);
999
1000 # delete information for specified tag if it exists in image
1001 # (also resets AddValue and DelValue options for this tag)
1002 $exifTool->SetNewValue($tag);
1003
1004 # reset all values from previous calls to SetNewValue()
1005 $exifTool->SetNewValue();
1006
1007 # delete a specific keyword
1008 $exifTool->SetNewValue('Keywords', $word, DelValue => 1);
1009
1010 # set keywords (a list-type tag) with two new values
1011 $exifTool->SetNewValue(Keywords => 'word1');
1012 $exifTool->SetNewValue(Keywords => 'word2');
1013 # equivalent, but set both in one call using an array reference
1014 $exifTool->SetNewValue(Keywords => ['word1','word2']);
1015
1016 # add a keyword without replacing existing keywords in the file
1017 $exifTool->SetNewValue(Keywords => $word, AddValue => 1);
1018
1019 # set a tag in a specific group
1020 $exifTool->SetNewValue(Headline => $val, Group => 'XMP');
1021 $exifTool->SetNewValue('XMP:Headline' => $val); # (equivalent)
1022
1023 # shift original date/time back by 2.5 hours
1024 $exifTool->SetNewValue(DateTimeOriginal => '2:30', Shift => -1);
1025
1026 # write a tag only if it had a specific value
1027 # (the order of the following calls is not significant)
1028 $exifTool->SetNewValue(Title => $oldVal, DelValue => 1);
1029 $exifTool->SetNewValue(Title => $newVal);
1030
1031 # write tag by numerical value
1032 $exifTool->SetNewValue(Orientation => 6, Type => 'ValueConv');
1033 $exifTool->SetNewValue('Orientation#' => 6); # (equivalent)
1034
1035 # delete all but EXIF tags
1036 $exifTool->SetNewValue('*'); # delete all...
1037 $exifTool->SetNewValue('EXIF:*', undef, Replace => 2); # ...but EXIF
1038
1039 # write structured information as a HASH reference
1040 $exifTool->SetNewValue('XMP:Flash' => {
1041 mode => 'on',
1042 fired => 'true',
1043 return => 'not'
1044 });
1045
1046 # write structured information as a serialized string
1047 $exifTool->SetNewValue('XMP:Flash'=>'{mode=on,fired=true,return=not}');
1048
1049 (See <http://owl.phy.queensu.ca/~phil/exiftool/struct.html#Serialize>
1050 for a description of the structure serialization technique.)
1051
1052 Inputs:
1053 0) ExifTool object reference
1054
1055 1) [optional] Tag key or tag name, or undef to clear all new
1056 values. A tag name of '*' can be used when deleting tags to delete
1057 all tags, or all tags in a specified group. The tag name may be
1058 prefixed by group name, separated by a colon (ie. 'EXIF:Artist'),
1059 which is equivalent to using a Group option argument. Also, a '#'
1060 may be appended to the tag name (ie. 'EXIF:Orientation#'), with
1061 the same effect as setting Type to 'ValueConv'.
1062
1063 2) [optional] New value for tag. Undefined to delete tag from
1064 file. May be a scalar, scalar reference, list reference to set a
1065 list of values, or hash reference for a structure. Integer values
1066 may be specified as a hexadecimal string (with a leading '0x'), and
1067 simple rational values may be specified in fractional form (ie.
1068 '4/10'). Structure tags may be specified either as a hash
1069 reference or a serialized string (see the last two examples above).
1070
1071 3-N) [optional] SetNewValue option/value pairs (see below).
1072
1073 SetNewValue Options:
1074 AddValue
1075 Specifies that the value be added to an existing list rather
1076 than replacing the list. Valid values are 0 or 1. Default is
1077 0.
1078
1079 DelValue
1080 Delete the existing tag if it has the specified value. Valid
1081 values are 0 or 1. Default is 0.
1082
1083 EditGroup
1084 Create tags in existing groups only. Don't create new group.
1085 Valid values are 0 and 1. Default is 0.
1086
1087 EditOnly
1088 Edit tag only if it already exists. Don't create new tag.
1089 Valid values are 0 and 1. Default is 0.
1090
1091 Group
1092 Specifies group name where tag should be written. If not
1093 specified, tag is written to highest priority group as
1094 specified by "SetNewGroups". Any family 0 or 1 group name may
1095 be used. Case is not significant.
1096
1097 NoShortcut
1098 Disables default behaviour of looking up tag in shortcuts if
1099 not found otherwise.
1100
1101 Protected
1102 Bit mask for tag protection levels to write. Bit 0x01 allows
1103 writing of 'unsafe' tags (ie. tags not copied automatically via
1104 "SetNewValuesFromFile"). Bit 0x02 allows writing of
1105 'protected' tags, and should only be used internally by
1106 ExifTool. See Image::ExifTool::TagNames, for a list of tag
1107 names indicating 'unsafe' and 'protected' tags. Default is 0.
1108
1109 Replace
1110 Flag to replace the previous new values for this tag (ie.
1111 replace the values set in previous calls to "SetNewValue").
1112 This option is most commonly used to replace previously-set new
1113 values for list-type tags. Valid values are 0 (set new value
1114 normally -- adds to new values for list-type tags), 1 (reset
1115 previous new values for this tag and replace with the specified
1116 new value) or 2 (reset previous new values only).
1117
1118 Shift
1119 Shift the tag by the specified value. Currently only date/time
1120 tags and tags with numerical values may be shifted. Undefined
1121 for no shift, 1 for a positive shift, or -1 for a negative
1122 shift. A value of 0 causes a positive shift to be applied if
1123 the tag is shiftable and AddValue is set, or a negative shift
1124 for date/time tags only if DelValue is set. Default is undef.
1125 See Image::ExifTool::Shift.pl for more information.
1126
1127 Type
1128 The type of value being set. Valid values are PrintConv,
1129 ValueConv or Raw. Default is PrintConv if the "PrintConv"
1130 Option is set, otherwise ValueConv.
1131
1132 Return Values:
1133 In scalar context, returns the number of tags set and error
1134 messages are printed to STDERR. In list context, returns the
1135 number of tags set, and the error string (which is undefined if
1136 there was no error).
1137
1138 Note:
1139 When deleting groups of tags, the Replace option may be used as in
1140 the last example above to exclude specific groups from a mass
1141 delete. However, this technique may not be used to exclude
1142 individual tags. Instead, use "SetNewValuesFromFile" to recover
1143 the values of individual tags after deleting a group.
1144
1145 The following ExifTool options are effective in the call to
1146 "SetNewValue":
1147
1148 Charset, Escape, IgnoreMinorErrors, Lang, ListSep, ListSplit, PrintConv
1149 and Verbose.
1150
1151 SetNewValuesFromFile
1152 A very powerful routine that sets new values for tags from information
1153 found in a specified file.
1154
1155 # set new values from all information in a file...
1156 my $info = $exifTool->SetNewValuesFromFile($srcFile);
1157 # ...then write these values to another image
1158 my $result = $exifTool->WriteInfo($file2, $outFile);
1159
1160 # set all new values, preserving original groups
1161 $exifTool->SetNewValuesFromFile($srcFile, '*:*');
1162
1163 # set specific information
1164 $exifTool->SetNewValuesFromFile($srcFile, @tags);
1165
1166 # set new value from a different tag in specific group
1167 $exifTool->SetNewValuesFromFile($fp, 'IPTC:Keywords>XMP-dc:Subject');
1168
1169 # add all IPTC keywords to XMP subject list
1170 $exifTool->SetNewValuesFromFile($fp, 'IPTC:Keywords+>XMP-dc:Subject');
1171
1172 # set new value from an expression involving other tags
1173 $exifTool->SetNewValuesFromFile($file,
1174 'Comment<ISO=$ISO Aperture=$aperture Exposure=$shutterSpeed');
1175
1176 # set keywords list from the values of multiple tags
1177 $exifTool->SetNewValuesFromFile($file, { Replace => 0 },
1178 'keywords<xmp:subject', 'keywords<filename');
1179
1180 # copy all EXIF information, preserving the original IFD
1181 # (without '>*.*' tags would be copied to the preferred EXIF IFD)
1182 $exifTool->SetNewValuesFromFile($file, 'EXIF:*>*:*');
1183
1184 Inputs:
1185 0) ExifTool object reference
1186
1187 1) File name, file reference, or scalar reference
1188
1189 2-N) [optional] List of tag names to set or options hash
1190 references. All writable tags are set if none are specified. The
1191 tag names are not case sensitive, and may be prefixed by an
1192 optional family 0 or 1 group name, separated by a colon (ie.
1193 'exif:iso'). A leading '-' indicates tags to be excluded (ie.
1194 '-comment'), or a trailing '#' causes the ValueConv value to be
1195 copied (same as setting the Type option to 'ValueConv' for this tag
1196 only). An asterisk ('*') may be used for the tag name, and is
1197 useful when a group is specified to set all tags from a group (ie.
1198 'XMP:*'). A special feature allows tag names of the form
1199 'SRCTAG>DSTTAG' (or 'DSTTAG<SRCTAG') to be specified to copy
1200 information to a tag with a different name or a specified group.
1201 Both 'SRCTAG' and 'DSTTAG' may use '*' and/or be prefixed by a
1202 group name (ie. 'modifyDate>fileModifyDate' or '*>xmp:*'). Copied
1203 tags may also be added or deleted from a list with arguments of the
1204 form 'SRCTAG+>DSTTAG' or 'SRCTAG->DSTTAG'. Tags are evaluated in
1205 order, so exclusions apply only to tags included earlier in the
1206 list. An extension of this feature allows the tag value to be set
1207 from an expression containing tag names with leading '$' symbols
1208 (ie. 'Comment<the file is $filename'). Braces '{}' may be used
1209 around the tag name to separate it from subsequent text, and a '$$'
1210 is used to to represent a '$' symbol. (The behaviour for missing
1211 tags in expressions is defined by the "MissingTagValue" option.)
1212 Multiple options hash references may be passed to set different
1213 options for different tags. Options apply to subsequent tags in the
1214 argument list.
1215
1216 By default, this routine will commute information between same-
1217 named tags in different groups, allowing information to be
1218 translated between images with different formats. This behaviour
1219 may be modified by specifying a group name for extracted tags (even
1220 if '*' is used as a group name), in which case the information is
1221 written to the original group, unless redirected to a different
1222 group. When '*' is used for a group name, the family 1 group of
1223 the original tag is preserved. (For example, specifying '*:*'
1224 copies all information while preserving the original family 1
1225 groups.)
1226
1227 SetNewValuesFromFile Options:
1228 The options are the same was for "SetNewValue", and are passed
1229 directly to "SetNewValue" internally, with a few exceptions:
1230
1231 - The Replace option defaults to 1 instead of 0 as with
1232 "SetNewValue".
1233
1234 - The AddValue or DelValue option is set for individual tags if
1235 '+>' or '->' (or '+<' or '-<') are used.
1236
1237 - The Group option is set for tags where a group name is given.
1238
1239 - The Protected flag is set to 1 for individually specified tags.
1240
1241 - The Type option also applies to extracted tags.
1242
1243 Return Values:
1244 A hash of information that was set successfully. May include
1245 Warning or Error entries if there were problems reading the input
1246 file.
1247
1248 Notes:
1249 The PrintConv option applies to this routine, but it normally
1250 should be left on to provide more reliable transfer of information
1251 between groups.
1252
1253 If a preview image exists, it is not copied. The preview image
1254 must be transferred separately if desired, in a separate call to
1255 "WriteInfo"
1256
1257 When simply copying all information between files of the same type,
1258 it is usually desirable to preserve the original groups by
1259 specifying '*:*' for the tags to set.
1260
1261 The "Duplicates" option is always in effect for tags extracted from
1262 the source file using this routine.
1263
1264 The "Struct" option is enabled by default for tags extracted by
1265 this routine. This allows the hierarchy of complex structures to
1266 be preserved when copying, but the Struct option may be set to 0 to
1267 override this behaviour and copy as flattened tags instead.
1268
1269 GetNewValues
1270 Get list of new Raw values for the specified tag. These are the values
1271 that will be written to file. Only tags which support a 'List' may
1272 return more than one value.
1273
1274 $rawVal = $exifTool->GetNewValues($tag);
1275
1276 @rawVals = $exifTool->GetNewValues($tag);
1277
1278 Inputs:
1279 0) ExifTool object reference
1280
1281 1) Tag name (case sensitive, may be prefixed by family 0 or 1 group
1282 name)
1283
1284 Return Values:
1285 List of new Raw tag values, or first value in list when called in
1286 scalar context. The list may be empty either if the tag isn't
1287 being written, or if it is being deleted (ie. if "SetNewValue" was
1288 called without a value).
1289
1290 CountNewValues
1291 Return the total number of new values set.
1292
1293 $numSet = $exifTool->CountNewValues();
1294 ($numSet, $numPseudo) = $exifTool->CountNewValues();
1295
1296 Inputs:
1297 0) ExifTool object reference
1298
1299 Return Values:
1300 In scalar context, returns the total number of tags with new values
1301 set. In list context, also returns the number of "pseudo" tag
1302 values which have been set. "Pseudo" tags are tags like FileName
1303 and FileModifyDate which are not contained within the file and can
1304 be changed without rewriting the file.
1305
1306 SaveNewValues
1307 Save state of new values to be later restored by "RestoreNewValues".
1308
1309 $exifTool->SaveNewValues(); # save state of new values
1310 $exifTool->SetNewValue(ISO => 100); # set new value for ISO
1311 $exifTool->WriteInfo($src, $dst1); # write ISO + previous new values
1312 $exifTool->RestoreNewValues(); # restore previous new values
1313 $exifTool->WriteInfo($src, $dst2); # write previous new values only
1314
1315 Inputs:
1316 0) ExifTool object reference
1317
1318 Return Value:
1319 None.
1320
1321 RestoreNewValues
1322 Restore new values to the settings that existed when "SaveNewValues"
1323 was last called. May be called repeatedly after a single call to
1324 "SaveNewValues". See "SaveNewValues" above for an example.
1325
1326 Inputs:
1327 0) ExifTool object reference
1328
1329 Return Value:
1330 None.
1331
1332 SetFileModifyDate
1333 Set the file modification time from the new value of the FileModifyDate
1334 tag.
1335
1336 $exifTool->SetNewValue(FileModifyDate => '2000:01:02 03:04:05-05:00',
1337 Protected => 1);
1338 $result = $exifTool->SetFileModifyDate($file);
1339
1340 Inputs:
1341 0) ExifTool object reference
1342
1343 1) File name
1344
1345 2) [optional] Base time if applying shift (days before $^T)
1346
1347 Return Value:
1348 1 if the time was changed, 0 if nothing was done, or -1 if there
1349 was an error setting the time.
1350
1351 Notes:
1352 Equivalent to, but more efficient than calling "WriteInfo" when
1353 only the FileModifyDate tag has been set. If a timezone is not
1354 specified in the FileModifyDate value, local time is assumed. When
1355 shifting FileModifyDate, the time of the original file is used
1356 unless an optional base time is specified.
1357
1358 SetFileName
1359 Set the file name and directory. If not specified, the new file name
1360 is derived from the new values of the FileName and Directory tags. If
1361 the FileName tag contains a '/', then the file is renamed into a new
1362 directory. If FileName ends with '/', then it is taken as a directory
1363 name and the file is moved into the new directory. The new value for
1364 the Directory tag takes precedence over any directory specified in
1365 FileName.
1366
1367 $result = $exifTool->SetFileName($file);
1368 $result = $exifTool->SetFileName($file, $newName);
1369
1370 Inputs:
1371 0) ExifTool object reference
1372
1373 1) Current file name
1374
1375 2) [optional] New file name
1376
1377 Return Value:
1378 1 if the file name or directory was changed, 0 if nothing was done,
1379 or -1 if there was an error renaming the file.
1380
1381 Notes:
1382 Will not overwrite existing files. New directories are created as
1383 necessary.
1384
1385 SetNewGroups
1386 Set the order of the preferred groups when adding new information. In
1387 subsequent calls to "SetNewValue", new information will be created in
1388 the first valid group of this list. This has an impact only if the
1389 group is not specified when calling "SetNewValue" and if the tag name
1390 exists in more than one group. The default order is EXIF, IPTC then
1391 XMP. Any family 0 group name may be used. Case is not significant.
1392
1393 $exifTool->SetNewGroups('XMP','EXIF','IPTC');
1394
1395 Inputs:
1396 0) ExifTool object reference
1397
1398 1-N) Groups in order of priority. If no groups are specified, the
1399 priorities are reset to the defaults.
1400
1401 Return Value:
1402 None.
1403
1404 GetNewGroups
1405 Get current group priority list.
1406
1407 @groups = $exifTool->GetNewGroups();
1408
1409 Inputs:
1410 0) ExifTool object reference
1411
1412 Return Values:
1413 List of group names in order of write priority. Highest priority
1414 first.
1415
1416 GetTagID
1417 Get the ID for the specified tag. The ID is the IFD tag number in EXIF
1418 information, the property name in XMP information, or the data offset
1419 in a binary data block. For some tags, such as Composite tags where
1420 there is no ID, an empty string is returned. In list context, also
1421 returns a language code for the tag if available and different from the
1422 default language (ie. with alternate language entries for XMP "lang-
1423 alt" tags).
1424
1425 $id = $exifTool->GetTagID($tag);
1426 ($id, $lang) = $exifTool->GetTagID($tag);
1427
1428 Inputs:
1429 0) ExifTool object reference
1430
1431 1) Tag key
1432
1433 Return Values:
1434 In scalar context, returns the tag ID or '' if there is no ID for
1435 this tag. In list context, returns the tag ID (or '') and the
1436 language code (or undef).
1437
1438 GetDescription
1439 Get description for specified tag. This function will always return a
1440 defined value. In the case where the description doesn't exist, one is
1441 generated from the tag name.
1442
1443 Inputs:
1444 0) ExifTool object reference
1445
1446 1) Tag key
1447
1448 Return Values:
1449 A description for the specified tag.
1450
1451 GetGroup
1452 Get group name(s) for a specified tag.
1453
1454 # return family 0 group name (ie. 'EXIF');
1455 $group = $exifTool->GetGroup($tag, 0);
1456
1457 # return all groups (ie. qw{EXIF IFD0 Author Main})
1458 @groups = $exifTool->GetGroup($tag);
1459
1460 # return groups as a string (ie. 'Main:IFD0:Author')
1461 $group = $exifTool->GetGroup($tag, ':3:1:2');
1462
1463 # return groups as a simplified string (ie. 'IFD0:Author')
1464 $group = $exifTool->GetGroup($tag, '3:1:2');
1465
1466 Inputs:
1467 0) ExifTool object reference
1468
1469 1) Tag key
1470
1471 2) [optional] Group family number, or string of numbers separated
1472 by colons
1473
1474 Return Values:
1475 Group name (or '' if tag has no group). If no group family is
1476 specified, "GetGroup" returns the name of the group in family 0
1477 when called in scalar context, or the names of groups for all
1478 families in list context. Returns a string of group names
1479 separated by colons if the input group family contains a colon.
1480 The string is simplified to remove a leading 'Main:' and adjacent
1481 identical group names unless the family string begins with a colon.
1482
1483 Notes:
1484 The group family numbers are currently available:
1485
1486 0) Information Type (ie. EXIF, XMP, IPTC)
1487 1) Specific Location (ie. IFD0, XMP-dc)
1488 2) Category (ie. Author, Time)
1489 3) Document Number (ie. Main, Doc1, Doc3-2)
1490 4) Instance Number (ie. Copy1, Copy2, Copy3...)
1491
1492 Families 0 and 1 are based on the file structure, and are similar
1493 except that family 1 is more specific and sub-divides some groups
1494 to give more detail about the specific location where the
1495 information was found. For example, the EXIF group is split up
1496 based on the specific IFD (Image File Directory), the MakerNotes
1497 group is divided into groups for each manufacturer, and the XMP
1498 group is separated based on the XMP namespace prefix. Note that
1499 only common XMP namespaces are listed in the GetAllGroups
1500 documentation, but additional namespaces may be present in some XMP
1501 data. Also note that the 'XMP-xmp...' group names may appear in
1502 the older form 'XMP-xap...' since these names evolved as the XMP
1503 standard was developed. The ICC_Profile group is broken down to
1504 give information about the specific ICC_Profile tag from which
1505 multiple values were extracted. As well, information extracted
1506 from the ICC_Profile header is separated into the ICC-header group.
1507
1508 Family 2 classifies information based on the logical category to
1509 which the information refers.
1510
1511 Family 3 gives the document number for tags extracted from embedded
1512 documents, or 'Main' for tags from the main document. (See the
1513 "ExtractEmbedded" option for extracting tags from embedded
1514 documents.) Nested sub-documents (if they exist) are indicated by
1515 numbers separated with dashes in the group name, to an arbitrary
1516 depth. (ie. 'Doc2-3-1' is the 1st sub-sub-document of the 3rd sub-
1517 document of the 2nd embedded document of the main file.)
1518
1519 Family 4 provides a method for differentiating tags when multiple
1520 tags exist with the same name in the same location. The primary
1521 instance of a tag (the tag extracted when the Duplicates option is
1522 disabled and no group is specified) has no family 4 group name, but
1523 additional instances have have family 4 group names of 'Copy1',
1524 'Copy2', 'Copy3', etc.
1525
1526 See "GetAllGroups [static]" for complete lists of group names.
1527
1528 GetGroups
1529 Get list of group names that exist in the specified information.
1530
1531 @groups = $exifTool->GetGroups($info, 2);
1532 @groups = $exifTool->GetGroups('3:1');
1533
1534 Inputs:
1535 0) ExifTool object reference
1536
1537 1) [optional] Info hash ref (default is all extracted info)
1538
1539 2) [optional] Group family number, or string of numbers (default 0)
1540
1541 Return Values:
1542 List of group names in alphabetical order. If information hash is
1543 not specified, the group names are returned for all extracted
1544 information. See "GetGroup" for an description of family numbers
1545 and family number strings.
1546
1547 BuildCompositeTags
1548 Builds composite tags from required tags. The composite tags are
1549 convenience tags which are derived from the values of other tags. This
1550 routine is called automatically by "ImageInfo" and "ExtractInfo" if the
1551 Composite option is set.
1552
1553 Inputs:
1554 0) ExifTool object reference
1555
1556 Return Values:
1557 (none)
1558
1559 Notes:
1560 Tag values are calculated in alphabetical order unless a tag
1561 Require's or Desire's another composite tag, in which case the
1562 calculation is deferred until after the other tag is calculated.
1563 Composite tags may need to read data from the image for their value
1564 to be determined, so for these "BuildCompositeTags" must be called
1565 while the image is available. This is only a problem if
1566 "ImageInfo" is called with a filename (as opposed to a file
1567 reference or scalar reference) since in this case the file is
1568 closed before "ImageInfo" returns. However if you enable the
1569 Composite option, "BuildCompositeTags" is called from within
1570 "ImageInfo" before the file is closed.
1571
1572 GetTagName [static]
1573 Get name of tag from tag key. This is a convenience function that
1574 strips the embedded instance number, if it exists, from the tag key.
1575
1576 Note: "static" in the heading above indicates that the function does
1577 not require an ExifTool object reference as the first argument. All
1578 functions documented below are also static.
1579
1580 $tagName = Image::ExifTool::GetTagName($tag);
1581
1582 Inputs:
1583 0) Tag key
1584
1585 Return Value:
1586 Tag name. This is the same as the tag key but has the instance
1587 number removed.
1588
1589 GetShortcuts [static]
1590 Get a list of shortcut tags.
1591
1592 Inputs:
1593 (none)
1594
1595 Return Values:
1596 List of shortcut tags (as defined in Image::ExifTool::Shortcuts).
1597
1598 GetAllTags [static]
1599 Get list of all available tag names.
1600
1601 @tagList = Image::ExifTool::GetAllTags($group);
1602
1603 Inputs:
1604 0) [optional] Group name, or string of group names separated by
1605 colons
1606
1607 Return Values:
1608 A list of all available tags in alphabetical order, or all tags in
1609 a specified group or intersection of groups. The group name is
1610 case insensitive, and any group in families 0-2 may be used except
1611 for EXIF family 1 groups (ie. the specific IFD).
1612
1613 GetWritableTags [static]
1614 Get list of all writable tag names.
1615
1616 @tagList = Image::ExifTool::GetWritableTags($group);
1617
1618 Inputs:
1619 0) [optional] Group name, or string of group names separated by
1620 colons
1621
1622 Return Values:
1623 A list of all writable tags in alphabetical order. These are the
1624 tags for which values may be set through "SetNewValue". If a group
1625 name is given, returns only writable tags in specified group(s).
1626 The group name is case insensitive, and any group in families 0-2
1627 may be used except for EXIF family 1 groups (ie. the specific IFD).
1628
1629 GetAllGroups [static]
1630 Get list of all group names in specified family.
1631
1632 @groupList = Image::ExifTool::GetAllGroups($family);
1633
1634 Inputs:
1635 0) Group family number (0-4)
1636
1637 Return Values:
1638 A list of all groups in the specified family in alphabetical order.
1639
1640 Here is a complete list of groups for each of these families:
1641
1642 Family 0 (Information Type):
1643 AFCP, AIFF, APE, APP0, APP12, APP13, APP14, APP15, APP4, APP5,
1644 APP6, APP8, ASF, CanonVRD, Composite, DICOM, DNG, DV, DjVu, Ducky,
1645 EXE, EXIF, ExifTool, FLAC, File, Flash, FlashPix, Font,
1646 FotoStation, GIF, GIMP, GeoTiff, H264, HTML, ICC_Profile, ID3,
1647 IPTC, ITC, JFIF, JPEG, Jpeg2000, LNK, Leaf, M2TS, MIE, MIFF, MNG,
1648 MPC, MPEG, MPF, MXF, MakerNotes, Matroska, Meta, Ogg, PDF, PICT,
1649 PNG, PSP, PhotoMechanic, Photoshop, PostScript, PrintIM, QuickTime,
1650 RAF, RIFF, RSRC, RTF, Rawzor, Real, SVG, SigmaRaw, Stim, Theora,
1651 Vorbis, XML, XMP, ZIP
1652
1653 Family 1 (Specific Location):
1654 AC3, AFCP, AIFF, APE, ASF, AVI1, Adobe, AdobeCM, CIFF, Canon,
1655 CanonCustom, CanonRaw, CanonVRD, Casio, Chapter#, Composite, DICOM,
1656 DNG, DV, DjVu, DjVu-Meta, Ducky, EPPIM, EXE, EXIF, ExifIFD,
1657 ExifTool, FLAC, File, Flash, FlashPix, Font, FotoStation, FujiFilm,
1658 GE, GIF, GIMP, GPS, GeoTiff, GlobParamIFD, GraphConv, H264, HP,
1659 HTML, HTML-dc, HTML-ncc, HTML-office, HTML-prod, HTML-vw96, HTTP-
1660 equiv, ICC-chrm, ICC-clrt, ICC-header, ICC-meas, ICC-meta, ICC-
1661 view, ICC_Profile, ICC_Profile#, ID3, ID3v1, ID3v1_Enh, ID3v2_2,
1662 ID3v2_3, ID3v2_4, IFD0, IFD1, IPTC, IPTC#, ITC, InteropIFD, JFIF,
1663 JPEG, JVC, Jpeg2000, KDC_IFD, Kodak, KodakBordersIFD,
1664 KodakEffectsIFD, KodakIFD, KyoceraRaw, LNK, Leaf, LeafSubIFD,
1665 Leica, M2TS, MAC, MIE-Audio, MIE-Camera, MIE-Canon, MIE-Doc, MIE-
1666 Extender, MIE-Flash, MIE-GPS, MIE-Geo, MIE-Image, MIE-Lens, MIE-
1667 Main, MIE-MakerNotes, MIE-Meta, MIE-Orient, MIE-Preview, MIE-
1668 Thumbnail, MIE-UTM, MIE-Unknown, MIE-Video, MIFF, MNG, MPC, MPEG,
1669 MPF0, MPImage, MXF, MakerNotes, MakerUnknown, Matroska, MetaIFD,
1670 Microsoft, Minolta, MinoltaRaw, NITF, Nikon, NikonCapture,
1671 NikonCustom, NikonScan, Ocad, Ogg, Olympus, PDF, PICT, PNG, PSP,
1672 Panasonic, Pentax, PhotoMechanic, Photoshop, PictureInfo,
1673 PostScript, PreviewIFD, PrintIM, ProfileIFD, QuickTime, RAF, RAF2,
1674 RIFF, RMETA, RSRC, RTF, Rawzor, Real, Real-CONT, Real-MDPR, Real-
1675 PROP, Real-RA3, Real-RA4, Real-RA5, Real-RJMD, Reconyx, Ricoh,
1676 SPIFF, SR2, SR2DataIFD, SR2SubIFD, SRF#, SVG, Samsung, Sanyo,
1677 Scalado, Sigma, SigmaRaw, Sony, SonyIDC, Stim, SubIFD, System,
1678 Theora, Track#, Version0, Vorbis, XML, XMP, XMP-DICOM, XMP-MP,
1679 XMP-MP1, XMP-PixelLive, XMP-acdsee, XMP-album, XMP-aux, XMP-cc,
1680 XMP-cell, XMP-crs, XMP-dc, XMP-dex, XMP-digiKam, XMP-exif, XMP-
1681 extensis, XMP-iptcCore, XMP-iptcExt, XMP-lr, XMP-mediapro, XMP-
1682 microsoft, XMP-mwg-coll, XMP-mwg-kw, XMP-mwg-rs, XMP-pdf, XMP-pdfx,
1683 XMP-photomech, XMP-photoshop, XMP-plus, XMP-prism, XMP-prl, XMP-
1684 pur, XMP-rdf, XMP-swf, XMP-tiff, XMP-x, XMP-xmp, XMP-xmpBJ, XMP-
1685 xmpDM, XMP-xmpMM, XMP-xmpNote, XMP-xmpPLUS, XMP-xmpRights, XMP-
1686 xmpTPg, ZIP
1687
1688 Family 2 (Category):
1689 Audio, Author, Camera, Document, ExifTool, Image, Location, Other,
1690 Printing, Time, Unknown, Video
1691
1692 Family 3 (Document Number):
1693 Doc#, Main
1694
1695 Family 4 (Instance Number):
1696 Copy#
1697
1698 GetDeleteGroups [static]
1699 Get list of all deletable group names.
1700
1701 @delGroups = Image::ExifTool::GetDeleteGroups();
1702
1703 Inputs:
1704 None.
1705
1706 Return Values:
1707 A list of deletable group names in alphabetical order. The current
1708 list of deletable group names is:
1709
1710 AFCP, CIFF, CanonVRD, EXIF, ExifIFD, Ducky, File, FlashPix,
1711 FotoStation, GlobParamIFD, GPS, IFD0, IFD1, InteropIFD,
1712 ICC_Profile, IPTC, JFIF, MakerNotes, Meta, MetaIFD, MIE,
1713 PhotoMechanic, Photoshop, PNG, PrintIM, RMETA, SubIFD, Trailer, XMP
1714
1715 All names in this list are either family 0 or family 1 group names,
1716 with the exception of 'Trailer' which allows all trailers in JPEG
1717 and TIFF-format images to be deleted at once, including unknown
1718 trailers. To schedule a group for deletion, call "SetNewValue"
1719 with an undefined value and a tag name like 'Trailer:*'.
1720
1721 GetFileType [static]
1722 Get type of file given file name.
1723
1724 my $type = Image::ExifTool::GetFileType($filename);
1725 my $desc = Image::ExifTool::GetFileType($filename, 1);
1726
1727 Inputs:
1728 0) [optional] File name (or just an extension)
1729
1730 1) [optional] Flag to return a description instead of a type. Set
1731 to 0 to return type for recognized but unsupported files (otherwise
1732 the return value for unsupported files is undef).
1733
1734 Return Value:
1735 A string, based on the file extension, which indicates the basic
1736 format of the file. Note that some files may be based on other
1737 formats (like many RAW image formats are based on TIFF). In array
1738 context, may return more than one file type if the file may be
1739 based on different formats. Returns undef if files with this
1740 extension are not yet supported by ExifTool. Returns a list of
1741 extensions for all supported file types if no input extension is
1742 specified (or all recognized file types if the description flag is
1743 set to 0). Returns a more detailed description of the specific
1744 file format when the description flag is set.
1745
1746 CanWrite [static]
1747 Can the specified file be written?
1748
1749 my $writable = Image::ExifTool::CanWrite($filename);
1750
1751 Inputs:
1752 0) File name or extension
1753
1754 Return Value:
1755 True if ExifTool supports writing files of this type (based on the
1756 file extension).
1757
1758 CanCreate [static]
1759 Can the specified file be created?
1760
1761 my $creatable = Image::ExifTool::CanCreate($filename);
1762
1763 Inputs:
1764 0) File name or extension
1765
1766 Return Value:
1767 True if ExifTool can create files with this extension from scratch.
1768 Currently, this can only be done with XMP, MIE, ICC, VRD and EXIF
1769 files.
1770
1772 Certain meta information formats allow coded character sets other than
1773 plain ASCII. When reading, 8-bit encodings are passed straight through
1774 ExifTool without re-coding unless specified otherwise below, and multi-
1775 byte encodings are converted according to the "Charset" option ('UTF8'
1776 by default). When writing, the inverse conversions are performed. See
1777 the "Charset" option for a list of valid character sets.
1778
1779 More specific details are given below about how character coding is
1780 handled for EXIF, IPTC, XMP, PNG, ID3, PDF, Photoshop, QuickTime, MIE
1781 and Vorbis information:
1782
1783 EXIF
1784 Most textual information in EXIF is stored in ASCII format, and
1785 ExifTool does not convert these tags. However it is not uncommon for
1786 applications to write UTF-8 or other encodings where ASCII is expected,
1787 and ExifTool will quite happily read/write any encoding without
1788 conversion. For a few EXIF tags (UserComment, GPSProcessingMethod and
1789 GPSAreaInformation) the stored text may be encoded either in ASCII,
1790 Unicode (UCS-2) or JIS. When reading these tags, Unicode and JIS are
1791 converted to the character set specified by the "Charset" option.
1792 Other encodings are not converted. When writing, text is stored as
1793 ASCII unless the string contains special characters, in which case it
1794 is converted from the specified character set and stored as Unicode.
1795 ExifTool writes Unicode in native EXIF byte ordering by default, but
1796 this may be changed by setting the ExifUnicodeByteOrder tag. The EXIF
1797 "XP" tags (XPTitle, XPComment, etc) are always stored as little-endian
1798 Unicode, and are read and written using the specified character set.
1799
1800 IPTC
1801 The value of the IPTC:CodedCharacterSet tag determines how the internal
1802 IPTC string values are interpreted. If CodedCharacterSet exists and
1803 has a value of 'UTF8' (or 'ESC % G') then string values are assumed to
1804 be stored as UTF-8, otherwise Windows Latin1 (cp1252, 'Latin') coding
1805 is assumed by default, but this can be changed with the "CharsetIPTC"
1806 option. When reading, these strings are converted to the character set
1807 specified by the "Charset" option. When writing, the inverse
1808 conversions are performed. No conversion is done if the internal
1809 (IPTC) and external (ExifTool) character sets are the same. Note that
1810 ISO 2022 character set shifting is not supported. Instead, a warning
1811 is issued and the string is not converted if an ISO 2022 shift code is
1812 encountered. See <http://www.iptc.org/IIM/> for the official IPTC
1813 specification.
1814
1815 (Note: Here, "IPTC" Refers to the older IPTC IIM format. The more
1816 recent IPTC Core and Extension specifications actually use the XMP
1817 format.)
1818
1819 XMP
1820 Exiftool reads XMP encoded as UTF-8, UTF-16 or UTF-32, and converts
1821 them all to UTF-8 internally. Also, all XML character entity
1822 references and numeric character references are converted. When
1823 writing, ExifTool always encodes XMP as UTF-8, converting the following
1824 5 characters to XML character references: & < > ' ". By default no
1825 further conversion is performed, however if the "Charset" option is
1826 other than 'UTF8' then text is converted to/from a specified character
1827 set when reading/writing.
1828
1829 PNG
1830 PNG TextualData tags are stored as tEXt, zTXt and iTXt chunks in PNG
1831 images. The tEXt and zTXt chunks use ISO 8859-1 encoding, while iTXt
1832 uses UTF-8. When reading, ExifTool converts all PNG textual data to
1833 the character set specified by the "Charset" option. When writing,
1834 ExifTool generates a tEXt chunk (or zTXt with the "Compress" option) if
1835 the text doesn't contain special characters or if Latin encoding is
1836 specified; otherwise an iTXt chunk is used and the text is converted
1837 from the specified character set and stored as UTF-8.
1838
1839 ID3
1840 The ID3v1 specification officially supports only ISO 8859-1 encoding (a
1841 subset of Windows Latin1), although some applications may incorrectly
1842 use other character sets. By default ExifTool converts ID3v1 text from
1843 Latin to the character set specified by the </Charset> option.
1844 However, the internal ID3v1 charset may be specified with the
1845 "CharsetID3" option. The encoding for ID3v2 information is stored in
1846 the file, so ExifTool converts ID3v2 text from this encoding to the
1847 character set specified by the "Charset" option. ExifTool does not
1848 currently write ID3 information.
1849
1850 PDF
1851 PDF text strings are stored in either PDFDocEncoding (similar to
1852 Windows Latin1) or Unicode (UCS-2). When reading, ExifTool converts to
1853 the character set specified by the "Charset" option. When writing,
1854 ExifTool encodes input text from the specified character set as Unicode
1855 only if the string contains special characters, otherwise
1856 PDFDocEncoding is used.
1857
1858 Photoshop
1859 Some Photoshop resource names are stored as Pascal strings with unknown
1860 encoding. By default, ExifTool assumes MacRoman encoding and converts
1861 this to UTF-8, but the internal and external character sets may be
1862 specified with "CharsetPhotoshop" and "Charset" options respectively.
1863
1864 QuickTime
1865 QuickTime text strings may be stored in a variety of poorly document
1866 formats. ExifTool does its best to decode these according to the
1867 "Charset" option setting.
1868
1869 MIE
1870 MIE strings are stored as either UTF-8 or ISO 8859-1. When reading,
1871 UTF-8 strings are converted according to the "Charset" option, and ISO
1872 8859-1 strings are never converted. When writing, input strings are
1873 converted from the specified character set to UTF-8. The resulting
1874 strings are stored as UTF-8 if they contain multi-byte UTF-8 character
1875 sequences, otherwise they are stored as ISO 8859-1.
1876
1877 Vorbis
1878 Vorbis comments are stored as UTF-8, and are converted to the character
1879 set specified by the "Charset" option.
1880
1882 Copyright 2003-2011, Phil Harvey
1883
1884 This library is free software; you can redistribute it and/or modify it
1885 under the same terms as Perl itself.
1886
1888 Many people have helped in the development of ExifTool through their
1889 bug reports, comments and suggestions, and/or additions to the code.
1890 See the ACKNOWLEDGEMENTS in the individual Image::ExifTool modules and
1891 in html/index.html of the Image::ExifTool distribution package for a
1892 list of people who have contributed to this project.
1893
1895 exiftool(1), Image::ExifTool::TagNames(3pm),
1896 Image::ExifTool::Shortcuts(3pm), Image::ExifTool::Shift.pl,
1897 Image::Info(3pm), Image::MetaData::JPEG(3pm)
1898
1899
1900
1901perl v5.12.4 2011-08-24 Image::ExifTool(3)