123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536 |
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
- "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
- <html>
- <head>
- <title>ExifTool FAQ</title>
- <link rel=stylesheet type='text/css' href='style.css' title='Style'>
- <style type="text/css">
- <!--
- pre { color: #800; margin-left: 2em }
- ol.index { margin: 0; padding: 0 0 0 2em }
- .U { color: #c84 } /* unused data block */
- .prog { padding: 0.5em; border: 1px solid gray; background: #fee }
- -->
- </style>
- </head>
- <body>
- <div class='index'>
- <ol class='index'>
- <li><a href="#Q1">Discussion forum</a></li>
- <li><a href="#Q2">Determining tag names</a></li>
- <li><a href="#Q3">ExifTool doesn't read/write properly</a></li>
- <li><a href="#Q4">Aperture and shutter speed</a></li>
- <li><a href="#Q5">Date and time formats</a></li>
- <li><a href="#Q6">"Can't convert TAG" errors</a></li>
- <li><a href="#Q7">Deleting all EXIF from a TIFF</a></li>
- <li><a href="#Q8">Writing Make, Model & MakerNotes</a></li>
- <li><a href="#Q9">Tag locations when copying</a></li>
- <li><a href="#Q10">Coded character sets</a></li>
- <li><a href="#Q11">User-defined tags</a></li>
- <li><a href="#Q12">Export to database</a></li>
- <li><a href="#Q13">Output file size</a></li>
- <li><a href="#Q14">GPS coordinate format</a></li>
- <li><a href="#Q15">MakerNote errors</a></li>
- <li><a href="#Q16">Some files not renamed</a></li>
- <li><a href="#Q17">List-type tags</a></li>
- <li><a href="#Q18">Windows character encoding</a></li>
- <li><a href="#Q19">Formatting tag values</a></li>
- <li><a href="#Q20">Write errors (repair corrupted EXIF)</a></li>
- <li><a href="#Q21">Newlines in values</a></li>
- <li><a href="#Q22">Order of operations</a></li>
- <li><a href="#Q23">"0 image files updated"</a></li>
- <li><a href="#Q24">Date/time gets reset to today</a></li>
- <li><a href="#Q25">Image validation</a></li>
- <li><a href="#Q26">Import from database</a></li>
- </ol>
- </div>
- <h1 class='up'>ExifTool FAQ</h1>
- <a name="Q1"></a>
- <p>1. <b>"Is there a forum for discussing ExifTool issues?"</b></p>
- <blockquote>
- ExifTool issues can be discussed on the ExifTool forum at
- <a href="http://u88.n24.queensu.ca/exiftool/forum/">http://u88.n24.queensu.ca/exiftool/forum/</a>
- </blockquote>
- <a name="Q2"></a>
- <p>2. <b>"How do I determine the tag name for some information?"</b></p>
- <blockquote>When you run exiftool, by default it prints descriptions, not tag
- names, for the information it extracts. These descriptions are in English
- unless the <code>-lang</code> option is used to select another language. Note
- that descriptions often contain spaces between words, but tag names never do.
- Also, tag names are always English, regardless of the <code>-lang</code>
- setting. To print the tag names instead instead of descriptions, use the
- <code>-s</code> option when extracting information. eg)
- <pre>exiftool -s image.jpg</pre>
- Valid characters in tag names are <code>A-Z</code>, <code>a-z</code>,
- <code>0-9</code>, <code>_</code> and <code>-</code>. See the
- <a href="TagNames/index.html">tag name documentation</a> for a complete list of
- available tag names.</blockquote>
- <blockquote>Tag names may be optionally prefixed by a family 0 or 1 group name
- to specify a particular information type or location. Use the
- <code>-g0</code> and <code>-g1</code> (or
- <code>-G0</code> and <code>-G1</code>) options when extracting
- information to see the corresponding group names.
- </blockquote>
- <a name="Q3"></a>
- <p>3a. <b>"ExifTool reports the wrong value or doesn't extract a tag"</b>,
- <br>3b. <b>"ExifTool doesn't write a tag properly"</b>, or
- <br>3c. <b>"Other software can't read information written by ExifTool"</b></p>
- <blockquote><i>[Also see <a href="#Q23">FAQ number 23</a> for reasons why
- ExifTool may not write some tags to certain file types.]</i></blockquote>
- <blockquote>First, make sure you are looking at the right information. Use
- ExifTool with a command like this to extract all information from the file,
- along with the location it was written:
- <pre>exiftool -a -G1 -s c:\images\test.jpg</pre>
- In this command, <code>-a</code> allows duplicate tags to be extracted,
- <code>-G1</code> shows the family 1 group name (ie. the location) of each tag,
- and <code>-s</code> shows the tag names instead of their descriptions.
- (Substitute the path name of your file in place of
- "<code>c:\images\test.jpg</code>".)</blockquote>
- <blockquote>When duplicate tags exist, only one is extracted unless the
- <code>-a</code> option is used. Beware that options like <code>-EXIF:all</code>
- select all EXIF tags from the extracted tags, so EXIF tags hidden by duplicate
- tags in other locations will not appear in the output for
- <code>-EXIF:all</code>. For example, the command
- <pre>exiftool -gps:all image.jpg</pre>
- will NOT necessarily extract all GPS tags because some GPS tags may have been
- suppressed by same-named tags in other groups. To be sure all GPS tags are
- extracted, the <code>-a</code> option must be used:
- <pre>exiftool -a -gps:all image.jpg</pre>
- If you are having problems with other software reading information written by
- ExifTool, if possible try first writing the information from the other software,
- then use ExifTool (with the <code>-a</code> and <code>-G1</code> options) to
- determine where the information was written. Once you know where it should go,
- you can use ExifTool to write to this location. You can read or write
- information in a specific location by prefixing the tag name on the command line
- with the desired group name. eg.) "<code>-ExifIFD:DateTimeOriginal</code>"
- </blockquote>
- <blockquote>This problem may also occur if contradictory information exists in
- different meta information formats within the same file. For example, often XMP
- will be ignored if IPTC exists and the Photoshop:IPTCDigest does not agree with
- the IPTC content. The
- <a href="http://www.metadataworkinggroup.org/">Metadata Working Group</a>
- recommends techniques to keep the EXIF, IPTC and XMP metadata synchronized.
- These recommendations are implemented by the ExifTool
- <a href="TagNames/MWG.html">MWG tags</a>. For maximum compatibility with the
- widest range of applications, it is suggested that these MWG tags be used
- whenever possible.</blockquote>
- <blockquote>One final note: When writing, the <code>-v2</code> option may be
- useful because it provides details about what ExifTool is writing, and where.
- </blockquote>
- <a name="Q4"></a>
- <p>4. <b>"ExifTool reports more than one shutter speed or aperture value, and
- they are slightly different"</b></p>
- <blockquote>
- There are a number of different ways that aperture and shutter speed information
- are stored in many images. The standard EXIF values (EXIF:FNumber and
- EXIF:ExposureTime) should correspond to the values displayed by your camera,
- but these values may have been rounded off. The corresponding EXIF APEX
- values (EXIF:ApertureValue and EXIF:ShutterSpeedValue) may be different due
- to their own round-off errors. If available, the MakerNotes values may be
- the most accurate because they haven't been rounded off to nice even values
- for display, so with these you may see odd values like 1/102 instead of
- 1/100, etc.
- </blockquote>
- <a name="Q5"></a>
- <p>5. <b>"How do I format date and time information for writing?"</b></p>
- <blockquote>All information (including date/time information) is written in the
- same format as it is read out. When reading, ExifTool converts all date and
- time information to standard EXIF format, so this is also the way it is
- specified when writing. The standard EXIF date/time format is
- "<code>YYYY:mm:dd HH:MM:SS</code>", and some meta information formats such as
- XMP also allow sub-seconds and a timezone to be specified. The timezone format
- is "<code>+HH:MM</code>", "<code>-HH:MM</code>" or "<code>Z</code>". For
- example:
- <pre>exiftool -xmp:dateTimeOriginal="2005:10:23 20:06:34.33-05:00" a.jpg
- </pre>
- When writing XMP or other information types which allow incomplete date/time
- values, the following input formats are also accepted:
- <pre>YYYY
- YYYY:mm
- YYYY:mm:dd
- YYYY:mm:dd HH:MM
- </pre>
- Having said this, ExifTool is very flexible about the actual format of input
- date/time values when writing, and will attempt to reformat any values into the
- standard format unless the <code>-n</code> option is used. Any separators may
- be used (or in fact, none at all). The first 4 consecutive digits found in the
- value are interpreted as the year, then next 2 digits are the month, and so on.
- <i class=lt>[The year must be 4 digits. Other fields are expected to be 2
- digits, but a single digit is allowed if the subsequent character is a
- non-digit.]</i> For EXIF date/time values, all 6 date/time fields must exist
- ("<code>YYYYmmddHHMMSS</code>"), but XMP date/time values require only the year
- ("<code>YYYY</code>"). This feature facilitates useful operations such as
- setting date/time tags from a date embedded in the file name. For example, the
- command
- <pre>exiftool "-alldates<filename" c:\images</pre>
- will set the common date/time tags from the file name for all images in the
- directory "<code>c:\images</code>". This will work for any file name which
- matches the above criteria (eg. "IMG_20110927_103000.jpg").
- <i class=lt>[AllDates is a shortcut for 3 tag names: DateTimeOriginal,
- CreateDate and ModifyDate. See the <a href="TagNames/Shortcuts.html">Shortcuts
- Tags documentation</a> for more information.]</i></blockquote>
- <blockquote>The <code>-d</code> option allows full control over the format of
- date/time values when reading. However, the effect of the <code>-d</code>
- option is not reversible, so date/time values must be written using the format
- described above, even when the <code>-d</code> option is used. Note that when
- reading, the effect of the <code>-n</code> option on date/time values is only to
- disable the <code>-d</code> formatting.</blockquote>
- <blockquote><b>Special feature</b>: A value of "<code>now</code>" may be used to
- represent the current time when writing any date/time tag. For example:
- <pre>exiftool -xmp:dateTimeOriginal=now a.jpg</pre>
- <i class=lt>[There is also a <a href="TagNames/Extra.html">Now tag</a> which may
- be used for a similar purpose by copying its value to another tag, but copying
- tags adds an extra read stage to the processing which is best avoided if
- performance is an issue.]</i>
- </blockquote>
- <a name="Q6"></a>
- <p>6. <b>"I get '<code>Can't convert TAG (not in PrintConv)</code>' errors when
- writing a tag"</b></p>
- <blockquote>
- By default, ExifTool applies a print conversion (PrintConv) to extracted
- information to make the output more human-readable. Some conversions involve
- lookup tables which are documented in the <b>Values</b> column of the
- <a href="TagNames/index.html">tag name documentation</a>. For example, the
- GPSAltitudeRef tag defines the following conversions:
- <pre>0 = Above Sea Level
- 1 = Below Sea Level
- </pre>
- For this tag, a value of '0' is printed as 'Above Sea Level', and '1' is printed
- as 'Below Sea Level'. Reading and writing with ExifTool is symmetrical <i>[with
- the possible exception of list-type tags -- see <a href="#Q17">FAQ number 17</a>
- below]</i>, so a value that is printed as 'Above Sea Level' must also be written in
- that form. (In other words, the inverse print conversion is applied when writing
- values.) For example, to write GPSAltitudeRef you can type:
- <pre>exiftool -gpsaltituderef="Above Sea Level" image.jpg
- </pre>
- or any unambiguous short form may be used and ExifTool will know what you mean, eg)
- <pre>exiftool -gpsaltituderef=above image.jpg
- </pre>
- Alternatively, the print conversion can be disabled for all tags with the
- <code>-n</code> option, or for individual tags by suffixing the tag name with a
- '<code>#</code>' character. In either case the printed value of GPSAltitudeRef
- will be '0' or '1' when extracting information, and the value is written in the
- same way. So following two commands have exactly the same effect as above:
- <pre>exiftool -gpsaltituderef=0 -n image.jpg
- exiftool -gpsaltituderef#=0 image.jpg
- </pre>
- Integer values may also be specified in hexadecimal (with a leading '0x'). For
- example, the following commands are all equivalent:
- <pre>exiftool -flash=1 -n image.jpg
- exiftool -flash=0x1 -n image.jpg
- exiftool -flash#=1 image.jpg
- exiftool -flash#=0x1 image.jpg
- exiftool -flash=fired image.jpg
- </pre></blockquote><blockquote class=prog>
- <b>Programmers</b>: These techniques look like this when calling Image::ExifTool
- functions from a Perl script:
- <pre>$exifTool->SetNewValue(flash => 1, Type => 'ValueConv');
- $exifTool->SetNewValue(flash => 0x1, Type => 'ValueConv');
- $exifTool->SetNewValue('flash#' => 1);
- $exifTool->SetNewValue('flash#' => 0x1);
- $exifTool->SetNewValue(flash => 'fired');
- </pre></blockquote>
- <a name="Q7"></a>
- <p>7. <b>"I can't delete all EXIF information from a TIFF file using
- '<code>exiftool -exif:all= img.tif</code>'"</b></p>
- <blockquote>This is because of the way a TIFF file is structured. With a JPEG
- image, this command removes IFD0 (the main Image File Directory) as well as any
- subdirectories, thus removing all EXIF information. But with the TIFF format,
- the main image itself is stored in IFD0, so deleting this directory would
- destroy the image. The same is true for any TIFF-based RAW file such as DNG,
- CR2, NEF, etc. For these types of files, ExifTool just deletes the ExifIFD
- subdirectory, so any information stored in other directories is preserved.
- </blockquote>
- <blockquote>Use "<code>exiftool -a -G1 -s img.tif</code>" to see where the
- information is stored. Any tags remaining in other IFD's must be deleted
- individually from a TIFF-format file if desired. For convenience, a
- <a href="TagNames/Shortcuts.html">shortcut tag</a> is provided to simplify the
- deletion of common metadata tags from IFD0 by adding "<code>-CommonIFD0=</code>"
- to the command line.
- </blockquote>
- <a name="Q8"></a>
- <p>8a. <b>"All maker note information is lost if I change the Make or Model tag"</b>, or
- <br>8b. <b>"I can't copy maker note information to an image"</b>, or
- <br>8c. <b>"I can't view a RAW image after changing the model tag"</b></p>
- <blockquote>
- The Make and Model tags are used by some image utilities (including ExifTool) to
- determine the format of the maker note information. Deleting or changing either
- of these tags may prevent these utilities from recognizing or properly
- interpreting the maker notes (which, for a RAW image, may mean that the image
- can no longer be properly rendered). Also beware that the maker notes
- information may be damaged if an image is edited when the maker notes are not
- properly recognized. So it is a good idea not to edit the Make and Model tags in
- the first place.</blockquote>
- <blockquote>If you really want to delete the Make and Model information, you
- might as well delete the maker notes too. You can do this with either of the
- following commands:
- <pre>exiftool -make= -model= -makernotes:all= image.jpg
- exiftool -make= -model= -makernotes= image.jpg
- </pre>
- For the same reason, maker notes can not be copied to an image with an
- incompatible Make or Model. To do this, the Make and Model tags must also be
- copied. eg)
- <pre>exiftool -tagsfromfile src.jpg -makernotes -make -model dst.jpg
- </pre>
- (Note that in this case the "<code>-makernotes:all</code>" syntax does not work
- because it attempts to copy the maker note tags individually. Since maker note
- tags may not be created individually, they must instead be copied as a block
- with "<code>-makernotes</code>".)
- </blockquote>
- <a name="Q9"></a>
- <p>9a. <b>"The information is different when I copy all tags to a new file"</b>, or
- <br>9b. <b>"The tag locations change when I use <code>-tagsfromfile</code>
- to copy information"</b></p>
- <blockquote>
- This feature is explained under the <code>-tagsFromFile</code> option in
- the <a href="exiftool_pod.html">exiftool application documentation</a>, but the
- question is common enough that it is discussed here in more detail.</blockquote>
- <blockquote>By default, ExifTool will store information in preferred locations
- when either writing new information or copying information between files. This
- freedom allows ExifTool to write or copy information to files of different
- formats without requiring the user to know details about where the information
- is stored.</blockquote>
- <blockquote>The preferred general locations for information written to JPEG
- images are 1) EXIF, 2) IPTC and 3) XMP. As an example, information extracted
- from the maker notes will be preferentially written (on a tag-by-tag basis) in
- EXIF format when copying information between two JPEG images. But if a specific
- tag doesn't exist in EXIF, then the tag is written to the first valid group in
- the order specified above. The advantage of "translating" the information to
- EXIF is that it then becomes readable by applications which only support
- standard EXIF. The disadvantage is that you don't get an exact copy of the
- original information structure.</blockquote>
- <blockquote>But ExifTool gives you the ability to customize this behaviour to
- write the information to wherever you want. This is done by specifying a group
- name for the tag(s) to be copied. This applies even if the group name is
- "<code>all</code>", in which case the original family 1 group is preserved. So
- to copy all information and preserve the original structure, use this syntax:
- <pre>exiftool -tagsfromfile src.jpg -all:all dst.jpg
- </pre>
- In this command, since no destination tag was specified, the destination is the
- same as the source (ie. "<code>-all:all>all:all</code>"), so the information is
- copied to the same family 1 group.</blockquote>
- <blockquote>Here are some examples to show you the type of control you have over
- where the information is written. All commands in each example are equivalent:
- <pre><span class='blk'># copy all tags to preferred groups (no destination group)</span>
- exiftool -tagsfromfile src.jpg dst.jpg
- exiftool -tagsfromfile src.jpg -all dst.jpg
- exiftool -tagsfromfile src.jpg "-all>all" dst.jpg
- exiftool -tagsfromfile src.jpg "-all:all>all" dst.jpg
- <span class='blk'># copy all tags, preserving family 1 group (destination group 'all')</span>
- exiftool -tagsfromfile src.jpg -all:all dst.jpg
- exiftool -tagsfromfile src.jpg "-all>all:all" dst.jpg
- exiftool -tagsfromfile src.jpg "-all:all>all:all" dst.jpg
- <span class='blk'># copy all tags to EXIF group (destination group 'exif')
- # [the destination family 1 group is the preferred EXIF IFD]</span>
- exiftool -tagsfromfile src.jpg "-all>exif:all" dst.jpg
- exiftool -tagsfromfile src.jpg "-all:all>exif:all" dst.jpg
- <span class='blk'># copy XMP tags to XMP group (destination group 'xmp')
- # [the destination family 1 group is the preferred XMP namespace]</span>
- exiftool -tagsfromfile src.jpg "-xmp:all" dst.jpg
- exiftool -tagsfromfile src.jpg "-xmp:all>xmp:all" dst.jpg
- <span class='blk'># copy XMP tags, preserving family 1 group (destination group 'all')</span>
- exiftool -tagsfromfile src.jpg "-xmp:all>all:all" dst.jpg
- <span class='blk'># copy XMP tags to preferred groups (no destination group)</span>
- exiftool -tagsfromfile src.jpg "-xmp:all>all" dst.jpg
- <span class='blk'># copy XMP tags to EXIF only (destination group 'exif')
- # [the destination family 1 group is the preferred EXIF IFD]</span>
- exiftool -tagsfromfile src.jpg "-xmp:all>exif:all" dst.jpg
- </pre>
- The same rules illustrated above also apply when copying individual tags.</blockquote>
- <blockquote>Note: If no destination group is specified, a new tag is created if
- necessary only in the preferred group, but if the same tag already exists in
- another group, then this information is also updated. (Otherwise inconsistent
- values for the same information would exist in different locations. Of course,
- you can always generate inconsistencies like this if you really want to by
- specifically writing contradictory information to different groups.)
- </blockquote>
- <blockquote>Certain types of meta information (such as EXIF, IPTC, XMP and
- ICC_Profile) may also be <b>copied as a block</b>. This technique copies all
- meta information, even if ExifTool doesn't have the ability to write some
- individual tags contained in the block. For all block types except EXIF, the
- metadata is copied byte-for-byte from the original image. With EXIF however,
- the metadata may be restructured to ensure that it is self-contained. Also note
- that EXIF may not be written as a block to TIFF-based file formats. Beware that
- <b>any existing metadata</b> of this type in the distination file <b>will be
- overwritten</b> by the new block.
- <pre><span class='blk'># copy EXIF as a block between same-named JPG files in different directories</span>
- exiftool -tagsfromfile SRCDIR/%f.%e -exif -ext jpg DSTDIR
- <span class='blk'># copy XMP as a block from one file to another</span>
- exiftool -tagsfromfile src.jpg -xmp dst.cr2
- </pre></blockquote>
- <a name="Q10"></a>
- <p>10. <b>"How does ExifTool handle coded character sets?"</b></p>
- <!-- vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv -->
- <!-- NOTE: CHANGES TO FAQ 10 MUST ALSO BE REFLECTED IN ExifTool.pod! -->
- <blockquote><i>[Also see <a href="#Q18">FAQ number 18</a> for help on displaying
- special characters in a Windows console.]</i></blockquote>
- <blockquote>Certain meta information formats allow coded character sets other
- than plain ASCII. When reading, most known encodings are converted to the
- external character set according to the exiftool "<code>-charset CHARSET</code>"
- or <code>-L</code> option, or to UTF‑8 by default. When writing, the
- inverse conversion is performed. Alternatively, special characters may be
- converted to/from HTML character entities with the <code>-E</code> option.
- </blockquote>
- <blockquote>A distinction is made between the <b>external</b> character set
- visible to the ExifTool user, and the <b>internal</b> character used to store
- text in the metadata of a file. These character sets may be specified
- separately as follows:
- <ol><li>The <b>external</b> character set for <b>tag values</b> passed to/from
- ExifTool is UTF‑8 by default, but it may be changed through any of these
- command-line options:
- <blockquote><code>-charset CHARSET</code> or
- <code>-charset exiftool=CHARSET</code> or <code>-L</code>
- </blockquote>
- The encoding of <b>file and directory names</b> (eg. the <i>FILE</i> argument on
- the command line) is different. By default, these names are passed straight
- through to the standard C I/O routines without recoding. On Mac/Linux these
- routines expect UTF‑8, but on Windows they use the system code page (which
- is dependent on your system settings). However, as of ExifTool 9.79, the
- external filename encoding may be specified:
- <blockquote><code>-charset filename=CHARSET</code></blockquote>
- When this is done, file and directory names are converted from the specified
- encoding to one appropriate for system I/O routines. In Windows, this also has
- the effect of enabling Unicode filename support via the special Windows
- wide-character I/O routines if the required Perl modules are available
- (these are included in the Windows executable version of ExifTool). See
- <a href="exiftool_pod.html#windows_unicode_file_names">WINDOWS UNICODE FILE NAMES</a>
- in the application documentation for more details.<br><br></li>
- <li>The <b>internal</b> character set for strings stored in file metadata may be
- specified for some metadata types:
- <blockquote><code>-charset TYPE=CHARSET</code></blockquote>
- (where <code>TYPE</code> is "<code>exif</code>", "<code>iptc</code>",
- "<code>id3</code>", "<code>photoshop</code>" or "<code>quicktime</code>")</li></ol>
- Valid <code>CHARSET</code> values are (with aliases given in brackets):
- <blockquote><table class=clear>
- <tr><td>UTF8</td><td>(cp65001, UTF‑8)</td><td>Thai</td><td>(cp874)</td></tr>
- <tr><td>Latin</td><td>(cp1252, Latin1)</td><td>MacRoman</td><td>(cp10000, Mac, Roman)</td></tr>
- <tr><td>Latin2</td><td>(cp1250)</td><td>MacLatin2</td><td>(cp10029)</td></tr>
- <tr><td>Cyrillic</td><td>(cp1251, Russian) </td><td>MacCyrillic</td><td>(cp10007)</td></tr>
- <tr><td>Greek</td><td>(cp1253)</td><td>MacGreek</td><td>(cp10006)</td></tr>
- <tr><td>Turkish</td><td>(cp1254)</td><td>MacTurkish</td><td>(cp10081)</td></tr>
- <tr><td>Hebrew</td><td>(cp1255)</td><td>MacRomanian</td><td>(cp10010)</td></tr>
- <tr><td>Arabic</td><td>(cp1256)</td><td>MacIceland</td><td>(cp10079)</td></tr>
- <tr><td>Baltic</td><td>(cp1257)</td><td>MacCroatian</td><td>(cp10082)</td></tr>
- <tr><td>Vietnam</td><td>(cp1258)</td></tr>
- </table></blockquote>
- The <code>-L</code> option is equivalent to "<code>-charset Latin</code>",
- "<code>-charset Latin1</code>" and "<code>-charset cp1252</code>".</blockquote>
- <blockquote>Type-specific details are given below about the special character
- handling for EXIF, IPTC, XMP, PNG, ID3, PDF, Photoshop, QuickTime, AIFF, MIE and
- Vorbis information:</blockquote>
- <!-- NOTE: CHANGES TO FAQ 10 MUST ALSO BE REFLECTED IN ExifTool.pod! -->
- <blockquote><b>EXIF</b>: Most textual information in EXIF is stored in ASCII
- format (called "string" in the <a href="TagNames/index.html">ExifTool tag name
- documentation</a>). By default ExifTool does not convert these strings.
- However, it is not uncommon for applications to write UTF‑8 or other
- encodings where ASCII is expected. To deal with these, ExifTool allows the
- internal EXIF string encoding to be specified with
- "<code>-charset exif=CHARSET</code>", which causes EXIF string values to be
- converted from the specified character set when reading, and stored with this
- character set when writing. (The
- <a href="http://www.metadataworkinggroup.org/">MWG</a> recommends using
- UTF‑8 encoding for EXIF strings, and in keeping with this the
- "<code>-use mwg</code>" feature sets the default internal EXIF string encoding
- to UTF‑8, but note that this will have no effect unless the external
- encoding is also set to something other than the default of UTF‑8.)</blockquote>
- <blockquote>A few EXIF tags (UserComment, GPSProcessingMethod and
- GPSAreaInformation) support a designated internal text encoding, with values
- stored as ASCII, Unicode (UCS‑2) or JIS. When reading these tags, ExifTool
- converts Unicode and JIS to the external character set specified by the
- <code>-charset</code> or <code>-L</code> option, or to UTF‑8 by default.
- ASCII text is not converted. When writing, text is stored as ASCII unless the
- string contains special characters, in which case it is converted from the
- external character set (UTF‑8 by default), and stored as Unicode. ExifTool
- writes Unicode in native EXIF byte ordering by default, but the byte order may
- be specified by setting the ExifUnicodeByteOrder tag (see the
- <a href="TagNames/Extra.html">Extra Tags</a> documentation).</blockquote>
- <blockquote>The EXIF "XP" tags (XPTitle, XPComment, etc) are always stored
- internally as little-endian Unicode (UCS‑2), and are read and written
- using the specified external character set.</blockquote>
- <!-- NOTE: CHANGES TO FAQ 10 MUST ALSO BE REFLECTED IN ExifTool.pod! -->
- <blockquote><b>IPTC</b><span class='sm'><sup>†</sup></span>: The
- value of the IPTC:CodedCharacterSet tag determines how the internal IPTC string
- values are interpreted. If CodedCharacterSet exists and has a value of
- "<code>UTF8</code>" (or "<code>ESC % G</code>") then string values are
- assumed to be stored as UTF‑8. Otherwise the internal IPTC encoding is
- assumed to be Windows Latin1 (cp1252), but this can be changed with
- "<code>-charset iptc=CHARSET</code>". When reading, these strings are converted
- to UTF‑8 by default, or to the character set specified by the
- <code>-charset</code> or <code>-L</code> option. When writing, the inverse
- conversions are performed. No conversion is done if the internal (IPTC) and
- external (ExifTool) character sets are the same. Note that ISO 2022 character
- set shifting is not supported. Instead, a warning is issued and the string is
- not converted if an ISO 2022 shift code is encountered. See the
- <a href="http://www.iptc.org/std/IIM/4.1/specification/IIMV4.1.pdf">IPTC IIM
- specification</a> for more information about IPTC character coding.</blockquote>
- <blockquote>ExifTool may be used to convert IPTC values to a different internal
- encoding. To do this, all IPTC tags must be rewritten along with the desired
- value of CodedCharacterSet. For example, the following command changes the
- internal IPTC encoding to UTF‑8 (from Windows Latin1 unless
- CodedCharacterSet was already "UTF8"):
- <pre>exiftool -tagsfromfile @ -iptc:all -codedcharacterset=utf8 a.jpg
- </pre>or from Windows Latin2 (cp1250) to UTF‑8:
- <pre>exiftool -tagsfromfile @ -iptc:all -codedcharacterset=utf8 -charset iptc=latin2 a.jpg
- </pre>and this command changes it back from UTF‑8 to Windows Latin1 (cp1252):
- <pre>exiftool -tagsfromfile @ -iptc:all -codedcharacterset= a.jpg
- </pre>or to Windows Latin2:
- <pre>exiftool -tagsfromfile @ -iptc:all -codedcharacterset= -charset iptc=latin2 a.jpg
- </pre>Note that unless CodedCharacterSet is UTF‑8, applications have no
- reliable way to determine the IPTC character encoding. For this reason, it is
- recommended that CodedCharacterSet be set to "<code>UTF8</code>" when creating
- new IPTC.</blockquote>
- <blockquote class='sm'><sup>†</sup> <span class=lt>Refers to the older
- <a href="http://www.iptc.org/site/News_Exchange_Formats/IIM/">IPTC IIM</a> format.
- The more recent
- <a href="http://iptc.cms.apa.at/site/Photo_Metadata/IPTC_Core_&_Extension/">IPTC
- Core and Extension specifications</a> actually use the XMP format (see below).</span>
- </blockquote>
- <!-- NOTE: CHANGES TO FAQ 10 MUST ALSO BE REFLECTED IN ExifTool.pod! -->
- <blockquote><b>XMP</b>: Exiftool reads XMP encoded as UTF‑8, UTF‑16
- or UTF‑32, and converts them all to UTF‑8 internally. Also, all XML
- character entity references and numeric character references are converted.
- When writing, ExifTool always encodes XMP as UTF‑8, converting the
- following 5 characters to XML character references: <code>& < > '
- "</code>. By default no further conversion is performed, however the
- <code>-charset</code> or <code>-L</code> option may be used used to convert
- text to/from a specified character set when reading/writing.</blockquote>
- <blockquote><b>PNG</b>: <a href="TagNames/PNG.html#TextualData">PNG TextualData
- tags</a> are stored as tEXt, zTXt and iTXt chunks in PNG images. The tEXt and
- zTXt chunks use ISO 8859-1 encoding, while iTXt uses UTF‑8. When reading,
- ExifTool converts all PNG textual data to the character set specified by the
- <code>-charset</code> or <code>-L</code> option, or to UTF‑8 by default.
- When writing, ExifTool generates a tEXt chunk (or zTXt with the <code>-z</code>
- option) if the text doesn't contain special characters or if Latin encoding is
- specified (<code>-L</code> or <code>-charset latin</code>); otherwise an iTXt
- chunk is used and the text is converted from the specified character set and
- stored as UTF‑8.</blockquote>
- <blockquote><b>JPEG Comment</b>: The encoding for the JPEG Comment (COM segment)
- is not specified, so ExifTool reads/writes this text without
- conversion.</blockquote>
- <blockquote><b>ID3</b>: The ID3v1 specification officially supports only ISO
- 8859‑1 encoding (a subset of Windows Latin1), although some applications
- may incorrectly use other character sets. By default ExifTool converts ID3v1
- text from Latin to the character set specified by the <code>-charset</code> or
- <code>-L</code> option, or to UTF‑8 by default. However, the internal
- ID3v1 charset may be specified with "<code>-charset id3=CHARSET</code>". The
- encoding for ID3v2 information is stored in the file, so ExifTool converts
- ID3v2 text from this encoding to the character set specified by
- <code>-charset</code> or <code>-L</code>, or to UTF‑8 by default. ExifTool
- does not currently write ID3 information.</blockquote>
- <blockquote><b>PDF</b>: PDF text strings are stored in either PDFDocEncoding
- (similar to Windows Latin1) or Unicode (UCS‑2). When reading, ExifTool
- converts to the character set specified by the <code>-charset</code> or
- <code>-L</code> option, or to UTF‑8 by default. When writing, ExifTool
- encodes input text from the specified character set as Unicode only if the
- string contains special characters, otherwise PDFDocEncoding is
- used.</blockquote>
- <blockquote><b>Photoshop</b>: Some Photoshop resource names are stored as
- Pascal strings with unknown encoding. By default, ExifTool assumes MacRoman
- encoding and converts this to UTF‑8, but the internal and external
- character sets may be specified with <code>-charset Photoshop=CHARSET</code>
- and <code>-charset CHARSET</code> respectively.</blockquote>
- <blockquote><b>QuickTime</b>: QuickTime text strings may be stored in a
- variety of poorly documented formats, and ExifTool does its best to decode
- these according to the <code>-charset</code> option setting. For some
- QuickTime strings where the internal encoding is not known, ExifTool assumes
- a default encoding of MacRoman, but this may be changed with
- "<code>-charset QuickTime=CHARSET</code>".</blockquote>
- <blockquote><b>AIFF</b>: AIFF strings are assumed to be stored in MacRoman, and
- are converted according to the <code>-charset</code> option when reading.
- </blockquote>
- <blockquote><b>MIE</b>: MIE strings are stored as either UTF‑8 or ISO
- 8859‑1. When reading, UTF‑8 strings are converted according to
- the <code>-charset</code> or <code>-L</code> option, and ISO 8859‑1
- strings are never converted. When writing, input strings are converted from
- the specified character set to UTF‑8. The resulting strings are stored as
- UTF‑8 if they contain multi-byte UTF‑8 character sequences,
- otherwise they are stored as ISO 8859‑1.</blockquote>
- <blockquote><b>Vorbis</b>: Vorbis comments are stored as UTF‑8,
- and are converted to the character set specified by <code>-charset</code> or
- <code>-L</code> when reading.</blockquote>
- <blockquote class=prog>
- <b>Programmers</b>: ExifTool returns all values as byte strings of encoded
- characters. Perl wide characters are not used. The encoding is UTF‑8 by
- default, but valid UTF‑8 can not be guaranteed for all values, so the
- caller must validate the encoding if necessary. The encodings described above
- are set by the various <a href="ExifTool.html#Charset">Charset options</a> of
- the API.
- <br><br><b>Note</b>: Some settings of the system PERL_UNICODE environment
- variable may be incompatible with ExifTool's character handling.
- </blockquote>
- <!-- NOTE: CHANGES TO FAQ 10 MUST ALSO BE REFLECTED IN ExifTool.pod! -->
- <!-- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -->
- <a name="Q11"></a>
- <p>11. <b>"My user-defined tags don't work"</b></p>
- <blockquote>
- For examples of how to add user-defined tags, see the
- <a href="config.html">ExifTool_config</a> file in the ExifTool distribution.
- It may be useful to activate this file as a test before trying to implement
- your own config file. To activate this file, copy it to your <b>HOME</b>
- directory then rename it to "<code>.ExifTool_config</code>".
- <blockquote class=lt><b>Note</b>: The config file must be renamed at the
- command line because neither the Windows nor Mac GUI allow a file name to
- begin with a "<code>.</code>". To do this in Windows, run "cmd.exe" and type
- the following (pressing <i>RETURN</i> at the end of each line):
- <pre>cd %HOMEPATH%
- rename ExifTool_config .ExifTool_config
- </pre>
- or on a Mac, open the "Terminal" application (from the /Applications/Utilities
- folder) and type this command then press <i>RETURN</i>:
- <pre>mv ExifTool_config .ExifTool_config
- </pre></blockquote>
- With the sample config file installed, you should be able to write the example
- tags. A command like this:
- <pre>exiftool -v2 -NewXMPxmpTag=test <i>FILE</i></pre>
- should print this as the first line of its output:
- <pre>Writing XMP-xmp:NewXMPxmpTag
- </pre>
- If this doesn't work, the most common problem is that the
- "<code>.ExifTool_config</code>" configuration file isn't getting loaded. In
- this case, there are a few things you can try:
- <ol>
- <li>Make sure the config file name is correct. It must be
- "<code>.ExifTool_config</code>" (note the leading "<code>.</code>", and the
- capital "<code>T</code>").</li>
- <li>Set either the <b>HOME</b> or the <b>EXIFTOOL_HOME</b> environment variable
- to the name of the directory where you put your "<code>.ExifTool_config</code>"
- file.</li>
- <li>Put the config file in the same directory as the exiftool script. (Also, be
- sure the config filename starts with a dot! See the note above for help
- renaming the config file.)</li>
- <li>If you can't get the config file to load automatically, you can try loading
- it manually with the exiftool <code>-config <i>CFGFILE</i></code> option. (Note:
- This must be the first option on the command line.) This allows loading
- of a config file with any name.</li>
- </ol>
- </blockquote>
- <blockquote>If necessary, you can verify that ExifTool is loading your config
- file by adding the following line to your file:
- <pre>print "LOADED!\n";
- </pre>
- If you see a "<code>LOADED!</code>" message when you run exiftool, but your new
- tags still don't work, make sure you are using the proper tag name and that the
- file you are writing can support this type of information.</blockquote>
- <blockquote>Note that all tag names in the config file are <b>case
- sensitive</b>. Specifically, the case must be correct for tag names in
- Composite tag Require/Desire entries. Also note that XMP tag names are
- generated automatically by capitalizing the tag ID unless the tag definition
- contains a "Name" entry.</blockquote>
- <blockquote class=prog><b>Programmers</b>: To specify the config file directory from within
- a Perl script when using the ExifTool API, set the <b>EXIFTOOL_HOME</b>
- environment variable before loading the ExifTool module:
- <pre>BEGIN { $ENV{EXIFTOOL_HOME} = '/config_file_directory' }
- use Image::ExifTool;
- </pre>
- Also see the <a href="ExifTool.html#Config">Configuration section of the
- ExifTool API documentation</a> for techniques to use a config file with another
- name, or to disable the config file feature.
- </blockquote>
- <a name="Q12"></a>
- <p>12. <b>"How do I export information from exiftool to a database?"</b></p>
- <blockquote><i>[See <a href="#Q26">FAQ number 26</a> for help with the reverse
- -- importing metadata from a database.]</i></blockquote>
- <blockquote>
- It is often easiest to export information formatted as a tab-delimited or
- comma-separated list of values using the exiftool <code>-T</code> or
- <code>-csv</code> option. As well, the <code>-r</code> option is useful for
- recursing through all images in a hierarchy of directories. For example:
- <pre>exiftool -T -r -filename -exposuremode -ISO t/images > out.txt
- </pre>
- This command recursively processes all images in the "<code>t/images</code>"
- directory, extracting FileName, ExposureMode and ISO tags, and writing the
- output to a tab-delimited text file called "<code>out.txt</code>". After the
- command has executed, "<code>out.txt</code>" will look something like this:
- <pre>Canon.jpg Manual 100
- Casio.jpg - 64
- Nikon.jpg - 100
- OlympusE1.jpg Auto 400
- </pre>
- One limitation of the <code>-T</code> option is that a list of tags to extract
- must be specified. Otherwise, all information is extracted from each input
- file, and the columns would contain values from random tags.</blockquote>
- <blockquote> The <code>-csv</code> (comma separated values) option solves this
- dilemma by pre-extracting information from all input files, then producing a
- sorted list of available tag names as the first row of the output, and
- organizing the information into columns for each tag. As well, a first column
- labelled "SourceFile" is generated. These features make it practical to use the
- <code>-csv</code> option for extracting all information from multiple images.
- For example, this command:
- <pre>exiftool -csv -r t/images > out.csv</pre>
- gives an output like this:
- <pre>SourceFile,AEBBracketValue,AELock,AFAreaHeight,AFAreaMode,AFAreas,[...]
- t/images/Canon.jpg,0,,151,,,[...]
- t/images/Casio.jpg,,,,,,[...]
- t/images/Nikon.jpg,,,,Single Area,,[...]
- t/images/OlympusE1.jpg,,Off,,,"Center (121,121)-(133,133)",[...]
- </pre>
- Note that the number of columns in the <code>-csv</code> output may be very
- large if all information is extracted. Missing tags are indicated by empty
- strings as in the example above, or by dashes if the <code>-f</code> option is
- used.</blockquote>
- <blockquote> It should be possible to import these files directly into most
- database applications. On the command line, any list of tag names may be used,
- and any number of file or directory names may be specified. (Hint: If your
- command line starts to get too long, you may want to look into using the
- <code>-@</code> option and/or the <a href="index.html#shortcut">ShortCut</a>
- feature).</blockquote>
- <blockquote>In Windows, a .BAT file containing the exiftool command may be used
- to give drag and drop functionality. Dropping a folder on the following .BAT
- file will create "out.txt" in the folder:
- <pre>echo "FileName<tab>Aperture<tab>ISO" > %1\out.txt
- exiftool -T -r -filename -aperture -ISO %1 >> %1\out.txt
- </pre>
- The "<code>echo</code>" command was included to add column headings to the
- output. (The tab character in the echo command, indicated by
- "<code><tab></code>", may be generated in Mac/Linux shells with CTRL-v
- then TAB, or in a Windows cmd shell with TAB when cmd.exe is run with the
- <code>/f:off</code> option to disable tab completion.)
- </blockquote>
- <blockquote>Other possible export formats include RDF/XML (with the the
- <code>-X</code> option), or JSON (with the <code>-j</code> option). These
- methods allow transfer of more complex data sets (including structured
- information with the <code>-struct</code> option), but require that the
- importing software supports these formats.</blockquote>
- <blockquote>Finally, the <code>-p</code> option may be used to generate any
- arbitrary output format. For example, the following format file
- (let's call it "<code>my.fmt</code>") may be used to emulate a CSV-formatted
- output:
- <pre>#[HEAD]FileName, Aperture, ISO
- $filename, $aperture, $iso
- </pre>
- with a command like this:
- <pre>exiftool -f -r -p my.fmt t/images > out.csv
- </pre>
- Alternatively, the <code>-p</code> option may be used with a format string instead
- of a file name. The following command has the same effect as above except that
- the row of headings is not printed (Note: Use single quotes as below on Mac/Linux,
- or double quotes instead on Windows):
- <pre>exiftool -f -r -p '$filename, $aperture, $iso' t/images > out.csv
- </pre>
- With the <code>-f</code> option, the value of any missing tag is printed as a
- dash. Without this option, missing tags generate a minor warning and the
- line in the <code>-p</code> output is not printed. The <code>-m</code> option
- may be used to ignore minor warnings, which causes these lines to be printed
- with an empty value for missing tags.</blockquote>
- <blockquote>
- See the <code>-p</code> option in the <a href="exiftool_pod.html">application
- documentation</a> for more information about this feature.
- </blockquote>
- <a name="Q13"></a>
- <p>13a. <b>"Why is my file smaller after I use ExifTool to write information?"</b>, or
- <br>13b. <b>"Why do some Offset tags change value when I write other tags?"</b></p>
- <blockquote>
- There are various specific reasons why this can happen, but the general answer
- is: When ExifTool writes an image, the meta information may be restructured in
- such a way that it takes less space than in the original file, or so that some
- tags are stored at different offsets in the file.</blockquote>
- <blockquote>The EXIF/TIFF standard allows for blocks of unreferenced data to
- exist in an image. Some digital cameras write JPEG or TIFF-based RAW files
- which contain large blocks of unused data, usually filled with binary zeros.
- The reason for this could be to simplify camera algorithms by allowing
- variable-sized information to be written at fixed offsets in the output image.
- When ExifTool rewrites an image it does not copy these unused blocks. This can
- result in a significant reduction in file size for some images. <i>[The
- <code>-htmlDump</code> option may be used to view the file structure if you are
- interested in seeing these unused data blocks -- use a command like
- "<code>exiftool -htmlDump a.jpg > out.html</code>", then open
- <code>out.html</code> in your web browser. Unused data blocks are
- <span class=U>brown</span> in this output.]</i> </blockquote>
- <blockquote>Also, the size of an XMP record may easily shrink or grow when it is
- rewritten, even if no meta information is changed. This is partly due to the
- fact that the XMP specification recommends a few KB of padding at the end of the
- record (ExifTool adds 2424 bytes by default, but this padding is omitted if the
- <code>-z</code> option is used), and partly due to the flexibility of the XMP
- format which allows the information to be written in various styles, some of
- which are more compact than others.
- </blockquote>
- <blockquote>You may also notice that the values of some "offset" tags (like
- ThumbnailOffset and PreviewImageStart) may change when the file is rewritten.
- This is normal, and simply indicates that the associated data is now stored at a
- different position within the file.</blockquote>
- <blockquote>ExifTool does not modify the image data itself, so editing a file is
- "lossless" as far as the image is concerned.</blockquote>
- <a name="Q14"></a>
- <p>14. <b>"What format do I use for writing GPS coordinates?"</b></p>
- <blockquote>ExifTool is very flexible in the formats allowed for entering GPS
- coordinates. Any string containing between 1 and 3 floating point numbers is
- valid. The numbers represent degrees, (and optionally) minutes and
- seconds.</blockquote>
- <blockquote>For EXIF GPS coordinates, the reference direction is specified
- separately with the EXIF:GPSLatitudeRef or EXIF:GPSLongitudeRef
- tag.</blockquote>
- <blockquote>For XMP GPS coordinates, the reference direction is specified within
- the XMP:GPSLatitude or XMP:GPSLongitude value, with west longitudes and south
- latitudes being specified either by negative coordinate values or by ending the
- string with "<code>W</code>" or "<code>S</code>". </blockquote>
- <blockquote>Here are some examples of equivalent ways to specify a GPS
- latitude in both EXIF and XMP:
- <pre>exiftool -exif:gpslatitude="42 30 0.00" -exif:gpslatituderef=S a.jpg
- exiftool -exif:gpslatitude="42 deg 30.00 min" -exif:gpslatituderef=S a.jpg
- exiftool -exif:gpslatitude=42.5 -exif:gpslatituderef=S a.jpg
- exiftool -xmp:gpslatitude="42 30 0.00 S" a.jpg
- exiftool -xmp:gpslatitude=42.50S a.jpg
- exiftool -xmp:gpslatitude=-42.5 a.jpg
- </pre>
- Similar styles may be used for longitude. ExifTool will convert any of these
- coordinate styles to the proper format for the specific tag used.
- </blockquote>
- <blockquote>When reading, ExifTool reports coordinates in the format
- <pre>DDD deg MM' SS.SS"</pre>
- where <code>DDD</code> is degress, <code>MM</code> is minutes, and <code>SS.SS</code>
- is seconds. The <code>-n</code> option may be used to change this to decimal
- degrees, or any arbitrary format may be specified with the <code>-c</code> option.
- See the <a href="exiftool_pod.html">application documentation</a> for details.
- </blockquote>
- <a name="Q15"></a>
- <p>15. <b>"I get MakerNote warnings or errors when reading or writing information"</b></p>
- <blockquote>Problems like this may be caused by image editing software which
- doesn't properly update offsets in the MakerNotes when rewriting an image. These
- offsets are used as pointers to reference tag values and structures within the
- metadata, and errors like this may lead to missing or incorrect values for some
- MakerNotes tags. In many cases, ExifTool will detect this type of problem and
- issue a warning like this when reading (or an error when writing):
- <pre>Warning: [minor] Possibly incorrect maker notes offsets (fix by -340?)
- </pre>
- <i class=lt>[Be aware that if multiple warnings occur, the <code>-a</code>
- option must be used to see them all, since by default only one warning is
- displayed per file.]</i> </blockquote>
- <blockquote>This is a particularly insidious problem that is sometimes difficult
- for ExifTool to correct automagically, so it requires some operator
- intervention. If this warning occurs, you have a few alternatives:</blockquote>
- <blockquote>1) Use the <code>-F</code> option to allow ExifTool to attempt to
- fix the incorrect offsets. If ExifTool was correct in its diagnosis, then this
- option will fix the incorrect offsets. This is usually the appropriate choice
- if this problem was caused by editing the image with other
- software.</blockquote>
- <blockquote>2) Use the <code>-m</code> option to ignore the warning (or downgrade
- the error to a warning when writing). This causes ExifTool to honour the
- existing maker note offsets, and may be the correct choice if images straight
- out of the camera have this problem.</blockquote>
- <blockquote>Often, the first choice (<code>-F</code>) is the right thing to do,
- but this depends on many factors, so it is best to try both methods then compare
- the resulting maker note information to see which works best for your
- situation.</blockquote>
- <blockquote>When writing, <code>-F</code> applies a permanent correction to the
- maker notes. Note that <u>some MakerNote information may be lost permanently
- if the proper correction is not applied when writing images with this
- problem</u>.</blockquote>
- <blockquote>3) The third alternative is to adjust the maker note offsets by a
- specific amount. This is done by appending an integer to the <code>-F</code>
- option. For example, with the warning above (where ExifTool suggests "fix by
- -340?"), <code>-F</code> would be equivalent to <code>-F-340</code>. See the
- <a href="exiftool_pod.html#f_offset_fixbase">-F option documentation</a> for
- more details. This advanced feature may require some technical knowledge about
- the structure of EXIF information (and here, ExifTool's <code>-htmlDump</code>
- feature may be very useful for visualizing this structure).</blockquote>
- <blockquote>Other types of MakerNote errors may also prevent the file from
- being written. However, most MakerNote errors are designated as <b>minor</b>,
- which allows them to be ignored by using the <code>-m</code> option. For
- example:
- <pre>Error: [minor] Bad format (65535) for MakerNotes entry 17
- </pre>
- Using <code>-m</code> will downgrade the minor error to a warning, allowing the
- file to be written, but <u>some MakerNote information may be lost when ignoring
- certain types of errors like this</u>. </blockquote>
- <a name="Q16"></a>
- <p>16. <b>"Why doesn't ExifTool rename my AVI files?"</b></p>
- <blockquote>By default, ExifTool only processes <u>writable file
- types</u><span class='sm'><sup>†</sup></span> when <u>any
- tag</u><span class='sm'><sup>‡</sup></span> is being written and a
- directory name is specified on the command line. To force exiftool to process
- other files, they must either be listed on the command line by name, or be
- specified using the <code>-ext</code> option, something like this:
- <pre>exiftool -ext AVI -ext JPG -d pics/%Y/%m "-directory<dateTimeOriginal" DIR
- </pre>
- When a single <code>-ext</code> option is used, only files of the specified type
- are processed. However, multiple <code>-ext</code> options may be used in the
- same command (as in the example above) to process any number of different file
- types.
- </blockquote>
- <blockquote class='sm'><sup>†</sup> <span class=lt>The
- <code>-listwf</code> option may be used to list the extensions of all writable file types.</span>
- <br><sup>‡</sup> <span class=lt>This includes "pseudo" tags like
- FileName, Directory, FileModifyDate and FileCreateDate.</span></blockquote>
- <a name="Q17"></a>
- <p>17. <b>"List-type tags do not behave as expected"</b></p>
- <blockquote>Tags indicated by a plus sign (<code>+</code>) in the
- <a href="TagNames/index.html">tag name documentation</a> are list-type tags.
- Two examples of common list-type tags are
- <a href="TagNames/IPTC.html#ApplicationRecord">IPTC:Keywords</a> and
- <a href="TagNames/XMP.html#dc">XMP:Subject</a>. These tags may contain multiple
- items which are combined into a single string when reading. (By default,
- extracted list items are separated by a comma and a space, but the
- <code>-sep</code> option may be used to change this.) When writing, separate
- items are assigned individually. For example, the following command writes
- three keywords to all writable files in directory <code>DIR</code>, replacing
- any previously existing keywords:
- <pre>exiftool -keywords=one -keywords=two -keywords=three DIR
- </pre>
- List items are assigned separately, NOT all together, because this would
- represent a single keyword:
- <pre>exiftool -keywords="one, two, three" test.jpg <span class=blk>(WRONG!)</span>
- </pre>
- With exiftool version 7.56 or later, the <code>-sep</code> option may be used to
- split values of list-type tags into separate items when writing. For example,
- <pre>exiftool -sep ", " -keywords="one, two, three" DIR
- </pre>
- will store three separate keywords, the same as the first example above. This
- feature may also be used to split a tag value into separate items if it was
- originally stored incorrectly as a single string:
- <pre>exiftool -sep ", " -tagsfromfile @ -keywords test.jpg
- </pre>
- However, sometimes it is desirable to have list items which contain a comma, and
- this is allowed:
- <pre>exiftool -contributor="Harvey, Phil" -contributor="Marley, Bob" a.jpg
- </pre>
- But to distinguish these entries when extracting information, a different list
- separator or a different output format must be used. For instance, the
- following command uses "<code>//</code>" to separate list items,
- <pre>exiftool -contributor -sep "//" a.jpg
- </pre>
- and produces an output like this:
- <pre class=blk>Contributor : Harvey, Phil//Marley, Bob
- </pre>
- Alternatively, the <code>-j</code>, <code>-php</code> and <code>-X</code>
- options use an output format which preserves the structure of a
- list (if <code>-sep</code> is NOT used).</blockquote>
- <blockquote>Note that the writing examples above overwrite any values which
- already existed in the original file for these tags. Instead, to add or delete
- items from an existing list, use "<code>+=</code>" or "<code>-=</code>" in place
- of "<code>=</code>". For example:
- <pre>exiftool -keywords+="add this" -keywords-="remove this" DIR
- </pre>
- With commands like this, new items are added to the list in place of the first
- deleted item, or at the end of the list if no items were removed.</blockquote>
- <blockquote>Note: Using "<code>=</code>" is equivalent to "<code>+=</code>" in
- any command where the same tag is set with "<code>+=</code>" or
- "<code>-=</code>" in another assignment. (ie. existing items will be preserved
- unless specifically deleted with "<code>-=</code>".)</blockquote>
- <blockquote>To prevent duplication when adding new items, specific items can be
- deleted then added back again in the same command. For example, the following
- command adds the keywords "one" and "two", ensuring that they are not duplicated
- if they already existed in the keywords of an image:
- <pre>exiftool -keywords-=one -keywords+=one -keywords-=two -keywords+=two DIR
- </pre>
- When copying list tags using the <code>-tagsFromFile</code> option, items are
- copied individually to form proper lists. However, there is a complication when
- copying multiple tags to a single list tag: Here, any assignment to a tag
- overrides earlier assignments to the same tag in the command. For instance,
- this command
- <pre>exiftool "-keywords<filename" "-keywords<comment" DIR
- </pre>
- writes only the value from the Comment tag. (Note that <code>-tagsFromFile @</code>
- is implied by the "<code><</code>" operation in this command, causing tags to
- be copied from the original file.) This may seem strange, but it prevents
- duplicate items from being added to a list when copying a group of tags from a
- file containing duplicate information. Alternatively, the
- <code>-addTagsFromFile</code> option may be used to accumulate items when
- copying from multiple tags:
- <pre>exiftool -addTagsFromFile @ "-keywords<filename" "-keywords<comment" DIR
- </pre>
- Note that as with "<code>=</code>" in the first three examples above, the
- "<code><</code>" operation of this command overwrites any Keywords that
- existed previously in the original file. To add to or remove from the existing
- keywords, use "<code>+<</code>" or "<code>-<</code>".
- </blockquote>
- <a name="Q18"></a>
- <p>18. <b>"Special characters don't display properly in my Windows console"</b></p>
- <blockquote>The Windows cmd.exe console uses an MS-DOS encoding by default
- (cp437 or something similar, depending on your region). The exiftool
- <code>-charset</code> option may be used to encode the exiftool output for a
- specific Windows code page, which may help display some special characters, but
- instead it may be better to switch the console to UTF‑8 (the native
- ExifTool character encoding). This is especially useful if you are using the
- <code>-lang</code> option to translate exiftool output to another language. To
- change the the Windows console to UTF‑8, follow these steps:
- <ol><li>Run "cmd.exe" to open a Windows console (select "Run..." from the
- Start menu and enter "cmd").</li>
- <li>Change the font in the console Properties to any True Type font (eg. "TT
- Lucida Console").</li>
- <li>Type "<code>chcp 65001</code>" then press RETURN at the command prompt.</li>
- </ol>
- The console should now be able to display UTF‑8 characters (cp65001). But
- note that the TT Lucida Console font shipped with Windows, at least my version,
- may not be very complete, and doesn't seem to contain Japanese or Chinese
- characters.</blockquote>
- <blockquote>To permanently set the font, select "Save properties for future
- windows" when changing the font Properties. Also, you can automatically run
- "<code>chcp 65001</code>" every time "cmd.exe" is launched by changing the
- Windows Registry for the Command Processor: Run "regedit" and put "<code>chcp
- 65001</code>" into Data field for "HKEY_LOCAL_MACHINE\Software\Microsoft\Command
- Processor\Autorun". (Unfortunately, I haven't been able to figure out how to
- change the code page for exiftool when launched via the Windows GUI. If anyone
- can figure out how to do this, please let me know.)
- </blockquote>
- <blockquote>On some Windows systems, using UTF‑8 doesn't seem to work. In
- this case, a Windows character set may be the best alternative: For instance,
- for Windows Latin1 (cp1252) type "<code>chcp 1252</code>" in the console to
- switch to cp1252, then run exiftool with "<code>-charset cp1252</code>" (or
- <code>-L</code>). This same technique can be used for other supported Windows
- code pages.</blockquote>
- <blockquote>A final alternative is to bypass the command-line encoding problems
- totally by extracting/writing to/from a separate text file, and using a UTF‑8
- aware text editor to view/edit the text. For example:
- <pre><span class=blk># extracting...</span>
- exiftool image.jpg > out.txt
- <span class=blk># writing...</span>
- exiftool "-subject<=subject.txt" image.jpg</pre></blockquote>
- <a name="Q19"></a>
- <p>19. <b>"How do I change the format of an extracted tag value?"</b></p>
- <blockquote>The exiftool application has built-in options which allow you to
- display numeric values (<code>-n</code>), escape special HTML characters
- (<code>-E</code>), and change the date/time (<code>-d</code>) and GPS coordinate
- (<code>-c</code>) formats, but sometimes more control is needed over the
- formatting of a value...</blockquote>
- <blockquote>The <code>-p</code> and <code>-tagsFromFile</code> options provide
- an advanced translation feature that allows arbitrary Perl expressions to be
- used to modify tag values. The basic syntax is this:
- <pre>${TAG;EXPR}</pre>
- where <code>TAG</code> is the tag name, and <code>EXPR</code> is a Perl
- expression acting on the default input variable (<code>$_</code>), which is
- initially the original value of the tag. For example, the following command
- sets the FileName from Artist, translating spaces to underlines:
- <pre>exiftool '-filename<${artist;tr/ /_/}.%e' image.jpg</pre>
- (Note: Use single quotes as above in Mac/Linux, or double quotes instead
- in Windows.)</blockquote>
- <blockquote>Another technique is to create a user-defined Composite tag to do
- the reformatting. Here is a basic config file that reformats the Artist tag to
- provide a new MyArtist tag with the same character translation as the example
- above:
- <pre>%Image::ExifTool::UserDefined = (
- 'Image::ExifTool::Composite' => {
- MyArtist => {
- Require => 'Artist',
- ValueConv => '$val =~ tr/ /_/; $val',
- },
- },
- );
- 1; # end
- </pre>
- With this config file, an Artist value of "Phil Harvey" yields a corresponding
- MyArtist value of "Phil_Harvey". The ValueConv string may be any valid Perl
- expression, and is evaluated to obtain the value for the new tag. In this
- expression, <code>$val</code> represents the ValueConv value of the Require'd
- tag. </blockquote>
- <blockquote>To activate the config file, it must be named
- "<code>.ExifTool_config</code>" and placed either in your home directory or in
- the same directory as the exiftool application. Note that the file name begins
- with a "<code>.</code>", so if you are in Windows or on a Mac you may need to
- rename the file from the command line since the GUI might not like file names
- beginning with a "<code>.</code>".</blockquote>
- <blockquote>User-defined Composite tags have many other features, including the
- ability to combine the values of multiple tags. See the
- <a href="config.html">config file documentation</a> for more details about
- user-defined tags, and lib/Image/ExifTool/README in the full distribution for a
- complete description of ValueConv features. Also, a
- <a href="http://u88.n24.queensu.ca/exiftool/forum/index.php?action=search2&search=code+userdefined">quick
- search of the ExifTool forum</a> should reveal a number of user-defined tag
- examples, and there are other good (and often more complex) examples which can
- be found in the %Image::ExifTool::Exif::Composite hash of the
- lib/Image/ExifTool/Exif.pm source code.
- </blockquote>
- <a name="Q20"></a>
- <p>20. <b>"ExifTool won't write an image due to errors"</b></p>
- <blockquote>Minor errors may be ignored using the <code>-m</code> option
- (<a href="#Q15">FAQ 15</a> discusses this with respect to MakerNote errors), but
- sometimes there are more serious errors which can't be ignored. ExifTool may be
- used to fix metadata problems in JPEG images by deleting all metadata and
- rebuilding it from scratch. The command looks like this:
- <pre>exiftool -all= -tagsfromfile @ -all:all -unsafe -icc_profile bad.jpg
- </pre>
- where "<code>bad.jpg</code>" is the name of the image that requires fixing. This
- command deletes all metadata then copies all writable tags that can be extracted
- from the original image to the same locations in the updated image. The
- "<code>Unsafe</code>" tag is a <a href="TagNames/Shortcuts.html">shortcut</a>
- for unsafe EXIF tags in JPEG images which are not normally copied. JPEG images
- may also contain an ICC color profile which should be preserved. The
- "<code>ICC_Profile</code>" tag is also marked as unsafe, but is not part of the
- EXIF so it isn't covered by the "<code>Unsafe</code>" shortcut and must be
- specified separately.</blockquote>
- <blockquote>After repairing an image like this you should be able to write to it
- without errors, but note that <u>some metadata from the original image may have
- been lost in the process</u>.</blockquote>
- <blockquote><b>Note</b>: ExifTool will not modify the JPEG image data, so if the
- image itself is corrupted (eg. if you get a message saying "Not a valid JPEG"),
- then ExifTool can not be used to repair the image. Also, ExifTool may not
- be used like this to repair TIFF-based files -- the risk of image corruption is
- too great because the image is stored in the same IFD as the metadata in these
- files.</blockquote>
- <blockquote>If there are also MakerNote problems in the file, you may want to
- add the <code>-F</code> option to the command. See <a href='#Q15'>FAQ 15</a>
- for details. For example, to rebuild the EXIF only and fix the MakerNote
- offsets you could do this:
- <pre>exiftool -exif:all= -tagsfromfile @ -exif:all -unsafe -thumbnailimage -F bad.jpg
- </pre>
- <b>Advanced</b>: The byte order of the newly created EXIF is set by the value of
- the ExifByteOrder tag. Since this tag does not belong to the EXIF group, it is
- not copied with <code>-exif:all</code> above (but would be copied with
- <code>-all:all</code> as in the first example). If ExifByteOrder is not set
- then the byte order is determined by the ordering of the MakerNotes if they are
- copied, otherwise big-endian ("MM") byte order is used by default.
- ExifByteOrder may be set to a specific value to force a particular byte order
- when creating new EXIF (eg. "<code>-ExifByteOrder=II</code>" for little-endian).
- </blockquote>
- <a name="Q21"></a>
- <p>21. <b>"How do I read/write values containing newline characters?"</b></p>
- <blockquote>When reading, by default exiftool converts all control characters to
- "." to avoid messing up the output formatting, so newlines will appear as a "."
- in the output. The <code>-b</code> option may be used to bypass all output
- formatting (except that a line-feed character is inserted between items in a
- list), but this may not be appropriate when the values of many tags must be
- extracted. In this case, the formatted output (<code>-p</code>), JSON
- (<code>-j</code>), XML (<code>-X</code>) and PHP (<code>-php</code>) options
- provide alternative output formats which preserve newlines in values.</blockquote>
- <blockquote>When writing, there are a number of options:
- <ol type='a'>
- <li>In many shells, a newline may be inserted directly in the command
- line:
- <p>Bourne shells (press <i>RETURN</i> inside a quoted string)</p>
- <pre>exiftool -comment="line 1
- line 2" image.jpg
- </pre>
- <p>(Also, in Bourne shells the character sequence <code>$'\n'</code>
- may be used for a newline.)</p>
- <p>C shells (press "<code>\</code>" then <i>RETURN</i> inside a quoted string)</p>
- <pre>exiftool -comment="line 1\
- line 2" image.jpg
- </pre>
- <i class=lt>[Unfortunately the Windows cmd shell provides no method to get a
- newline (CR/LF in Windows) into the command line. A linefeed (LF) may be
- inserted with CTRL-T, but I have found no way to insert a carriage return
- (CR).]</i><br><br>
- </li>
- <li>Use the <code>-E</code> option to allow HTML character entities (Note:
- In Windows a newline is "<code>&#xd;&#xa;</code>" instead of just
- "<code>&#xa;</code>"):
- <pre>exiftool -E "-comment=line 1&#xa;line 2" image.jpg
- </pre></li>
- <li>Write the tag from the contents of a separate text file:
- <pre>exiftool "-comment<=file.txt" image.jpg
- </pre></li>
- <li>Use <code>$/</code> in a redirection expression: (Note: Single quotes
- must be used in Mac/Linux shells around arguments containing a dollar sign,
- but double quotes are used instead in Windows. Also note that this technique
- is slower since the implied <code>-tagsFromFile</code> adds an extra unnecessary
- processing pass to read tags from the file.)
- <pre>exiftool '-comment<line 1$/line 2' image.jpg
- </pre></li>
- </ol>
- </blockquote>
- <a name="Q22"></a>
- <p>22. <b>"In what order are command-line assignments applied when writing?"</b></p>
- <blockquote>When writing, tag assignments on the command line are queued and
- applied together as each target file is processed. In general, assignments
- later on the command line override earlier assignments, but there are
- exceptions:
- <ol><li>When writing list-type tags (eg. <code>-keywords=one</code>), new values
- are accumulated rather than overriding earlier assignments.<br> </li>
- <li>When copying values to list-type tags (eg.
- <code>"-keywords<filename"</code>), new values are accumulated only if
- <code>-addTagsFromFile</code> is used, otherwise they override earlier
- assigments if <code>-tagsFromFile</code> is used or implied.<br> </li>
- <li>Tags copied with the <code>-tagsFromFile</code> option are assigned in
- order, and all together at the point in the command line where the
- <code>-tagsFromFile</code> option is located, regardless of whether these tags
- are specified immediately after the <code>-tagsFromFile</code> option or later
- on the command line. Remember that "<code>-tagsFromFile @</code>" is implied
- unless another file is specified when redirecting information with arguments
- like <code>"-DSTTAG<SRCTAG"</code>.</li></ol> Note: When copying tag values,
- adding to lists, or shifting date/time values, the source value is always the
- original value found in the file, regardless of any previous assignments. For
- example, the following command sets Subject to the original value of Title in
- the file (NOT to "test"):
- <pre>exiftool -title=test "-subject<title" a.jpg</pre></blockquote>
- <a name="Q23"></a>
- <p>23a. <b>"Why do I get '<code>0 image files updated</code>' when writing?"</b>, or<br>
- 23b. <b>"ExifTool doesn't write some tags to a file"</b></p>
- <blockquote>There are a few reasons why this may happen:
- <ol><li>The value of the tag is not being set correctly.</li></ol>
- This may be due to a tag value which can't be converted, in which case you
- should warning like this (note: you may need to use the <code>-v3</code> option
- to see the warning if other same-named tags are being set properly by the same
- assignment):
- <pre>Warning: Can't convert IFD0:Orientation (not in PrintConv)
- </pre>
- You get this warning if you write an invalid value to a tag which accepts only
- specific values. See the "Values" column in the appropriate table of the
- <a href="TagNames/index.html">tag name documentation</a> for a list of valid
- values for these types of tags. The value conversion may also be bypassed with
- the <code>-n</code> option, allowing numerical values to be written directly.
- See <a href="#Q6">FAQ number 6</a> for more details.
- <ol start="2"><li>The information type isn't supported by the format of the
- target file.</li></ol>
- Warnings are NOT generated when a tag isn't written because it is
- normal that many tags can't be written when copying between files of different
- formats.</blockquote>
- <blockquote>Tags are not written if the format of the target file doesn't
- support the specific type of meta information. For example, CRW images do not
- support EXIF or IPTC metdata. See the
- <a href="index.html#supported">Supported File Types</a> table for an indication
- of the tags supported by your file. If the tags aren't supported for your file
- type, then a <a href='metafiles.html'>metadata sidecar file</a> is an
- alternative.</blockquote>
- <blockquote>Also note that MakerNotes tags can not be created or deleted
- individually, so they can only be written if they already exist in a
- file. The entire MakerNotes must be created or deleted as a block (see
- <a href="#Q8">FAQ number 8</a> for details).
- <ol start="3"><li>A time value is being shifted but the specified tag doesn't
- exist.</li></ol>
- For example, <code>-datetimeoriginal+=1</code> will have no effect unless
- the DateTimeOriginal tag exists in the image.</blockquote>
- <a name="Q24"></a>
- <p>24. <b>"When I write a file the date/time gets reset to today's date"</b></p>
- <blockquote>There is sometimes confusion between date/time values stored in the
- metadata of the file itself and date/time values stored in the filesystem (ie.
- in the disk directory information). A command like this may be used to extract
- all date/time information with an indication of where it is stored:
- <pre>exiftool -time:all -a -G0:1 -s c:\images\test.jpg</pre>
- and should give an output something like this:
- <pre>[File:System] FileModifyDate : 2009:10:05 20:40:36-04:00
- [File:System] FileAccessDate : 2009:10:07 09:22:12-04:00
- [File:System] FileCreateDate : 2009:10:05 20:40:36-04:00
- [EXIF:IFD0] ModifyDate : 2003:10:31 15:44:19
- [EXIF:ExifIFD] DateTimeOriginal : 2003:10:31 15:44:19
- [EXIF:ExifIFD] CreateDate : 2003:10:31 15:44:19</pre>
- The <code>-G0:1</code> option causes the family 0 and 1 group names to be
- reported in square brackets for each tag. Tags labelled "File:System" are
- "pseudo" tags stored in the filesystem, while the others are "real" tags stored
- in the metadata of the file.</blockquote>
- <blockquote>ExifTool's <b>default behaviour is to set all filesystem times to
- the current date/time when any "real" tag is written</b>, but the
- <code>-P</code> option may be used to preserve the original FileModifyDate.
- FileAccessDate represents the time the file was last accessed, and is set to the
- current date/time whenever any software (including ExifTool) accesses the
- file.</blockquote>
- <blockquote>On systems where a filesystem creation date is maintained, ExifTool
- also sets this to the current date/time when the file is edited. On Windows the
- creation date is accessed through the FileCreateDate tag, and is also preserved
- with the <code>-P</code> option. On Mac/Linux FileInodeChangeDate is available
- instead of FileCreateDate, and the only way to preserve the file creation date
- is with the <code>-overwrite_original_in_place</code> option.</blockquote>
- <blockquote>For example, commands like this act on common metadata tags, setting
- the filesystem modification date/time to the current date/time:
- <pre><span class='blk'># common metadata date/time tags are incremented by 1 hour, while
- # FileModifyDate is set to the current date/time</span>
- exiftool -alldates+=1 c:\images</pre>
- <i class=lt>[The AllDates tag is a shortcut which represents the 3 common
- metadata date/time tags: DateTimeOriginal, CreateDate and
- ModifyDate.]</i></blockquote>
- <blockquote>However, FileModifyDate may be preserved with the <code>-P</code>
- option:
- <pre><span class='blk'># FileModifyDate is not changed</span>
- exiftool -alldates+=1 -P c:\images</pre>
- ExifTool also allows FileModifyDate to be written, which provides full control
- over the filesystem modification date/time when writing:
- <pre><span class='blk'># FileModifyDate is incremented by 1 hour</span>
- exiftool -alldates+=1 -filemodifydate+=1 c:\images
- <span class='blk'># FileModifyDate is set from the value of DateTimeOriginal
- # (before DateTimeOriginal is incremented by 1 hour)</span>
- exiftool -alldates+=1 "-filemodifydate<datetimeoriginal" c:\images
- </pre></blockquote>
- <a name="Q25"></a>
- <p>25. <b>"Can ExifTool be used as an image validator?"</b></p>
- <blockquote>ExifTool is <u>not</u> designed as an image validator. It does issue
- warnings about some of the more important problems in the metadata when
- reading, and will often catch more problems when writing, but it does not
- attempt to do a full validation. If you are looking for a validator,
- try <a href="http://jhove.sourceforge.net">JHOVE</a>.</blockquote>
- <a name="Q26"></a>
- <p>26. <b>"How do I import information from a database?"</b></p>
- <blockquote><i>[See <a href="#Q12">FAQ number 12</a> for help with the reverse
- -- exporting metadata to a database.]</i></blockquote>
- <blockquote>ExifTool has the ability to import metadata from CSV and JSON format
- database files for writing to output image files. For example, the following
- commands use imported metadata to write to all image files in a directory.
- <pre><span class='blk'># import from CSV file</span>
- exiftool -csv="c:\Users\Phil\test.csv" "c:\Users\Phil\Images"
- <span class='blk'># import from JSON file</span>
- exiftool -json="c:\Users\Phil\test.json" "c:\Users\Phil\Images"</pre>
- For the above commands, the input CSV or JSON file must have the same format as
- the output from these commands:
- <pre><span class='blk'># export to CSV file</span>
- exiftool -csv "c:\Users\Phil\Images" > "c:\Users\Phil\test.csv"
- <span class='blk'># export to JSON file</span>
- exiftool -json "c:\Users\Phil\Images" > "c:\Users\Phil\test.json"</pre>
- Specifically, the first row of the CSV file must contain the tag names.
- The first column must be a special "SourceFile" column, containing the names of
- the associated image files, with paths specified in the same way as on the
- command line. The JSON file contains similar entries, but is not structured in
- row/column format.</blockquote>
- <blockquote>For each image file specified on the command line, all tags for the
- database entry with the corresponding SourceFile name are written (with the
- exception of the FileName and Directory tags, which are ignored). A special
- SourceFile name of "*" may be used to match any image file. A warning is issued
- and nothing is written if a specified file does not match any SourceFile entry
- in the database.</blockquote>
- <blockquote>Tag names may be prefixed by a group name to write to a specific
- group (using the same format as when <code>-G</code> or <code>-G1</code> is
- added to the export command). Tags with empty values are ignored. To delete a
- tag, set the tag value to "-" and use the <code>-f</code> option when
- importing.</blockquote>
- <blockquote>See the <code>-csv</code> or <code>-j</code> option in the
- <a href="exiftool_pod.html#input_output_text_formatting">application documentation</a>
- for more details.</blockquote>
- <hr>
- <i>Last revised Jan. 12, 2015</i>
- <p class='lf'><a href="index.html"><-- Back to ExifTool home page</a></p>
- </body>
- </html>
|