
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" 
  "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html version="-//W3C//DTD XHTML 1.1//EN"
      xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.w3.org/1999/xhtml
                          http://www.w3.org/MarkUp/SCHEMA/xhtml11.xsd">
<head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
  <meta name="google-site-verification" content="MxsMq6bdLOx0KSuz1MY6yG9ZTIJ7_7DVRfl5NCAT5Yg"/>
  <title>ImageMagick: Format and Print Image Properties</title>
  <meta http-equiv="content-language" content="en-US"/>
  <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
  <meta http-equiv="reply-to" content="magick-users@imagemagick.org"/>
  <meta name="application-name" content="ImageMagick"/>
  <meta name="description" content="Use ImageMagick to convert, edit, or compose bitmap images in a variety of formats.  In addition resize, rotate, shear, distort and transform images automagically."/>
  <meta name="application-url" content="http://www.imagemagick.org"/>
  <meta name="generator" content="PHP"/>
  <meta name="keywords" content="format, print, image, properties, ImageMagick, PerlMagick, image processing, OpenMP, software development library, image, photo, software, Magick++, MagickWand"/>
  <meta name="rating" content="GENERAL"/>
  <meta name="robots" content="INDEX, FOLLOW"/>
  <meta name="generator" content="ImageMagick Studio LLC"/>
  <meta name="author" content="ImageMagick Studio LLC"/>
  <meta name="revisit-after" content="2 DAYS"/>
  <meta name="resource-type" content="document"/>
  <meta name="copyright" content="Copyright (c) 1999-2013 ImageMagick Studio LLC"/>
  <meta name="distribution" content="Global"/>
  <link rel="icon" href="../images/wand.png"/>
  <link rel="shortcut icon" href="../images/wand.ico"  type="images/x-icon"/>
  <link rel="canonical" href="http://www.imagemagick.org" />
  <link rel="meta" type="application/rdf+xml" title="ICI" href="http://imagemagick.org/ici.rdf"/>
  <!-- Add jQuery library -->
  <script type="text/javascript" src="http://localhost/ajax/libs/jquery/1.7/jquery.min.js"></script>
  
  <!-- Optionaly include easing and/or mousewheel plugins -->
  <script type="text/javascript" src="http://www.imagemagick.org/fancybox/jquery.easing-1.3.pack.js"></script>
  <script type="text/javascript" src="http://www.imagemagick.org/fancybox/jquery.mousewheel-3.0.6.pack.js"></script>
  
  <!-- Add fancyBox -->
  <link rel="stylesheet" href="http://www.imagemagick.org/fancybox/jquery.fancybox.css?v=2.0.4" type="text/css" media="screen" />
  <script type="text/javascript" src="http://www.imagemagick.org/fancybox/jquery.fancybox.pack.js?v=2.0.4"></script>
  
  <!-- Optionaly include button and/or thumbnail helpers -->
  <link rel="stylesheet" href="http://www.imagemagick.org/fancybox/helpers/jquery.fancybox-buttons.css?v=2.0.4" type="text/css" media="screen" />
  <script type="text/javascript" src="http://www.imagemagick.org/fancybox/helpers/jquery.fancybox-buttons.js?v=2.0.4"></script>
  
  <link rel="stylesheet" href="http://www.imagemagick.org/fancybox/helpers/jquery.fancybox-thumbs.css?v=2.0.4" type="text/css" media="screen" />
  <script type="text/javascript" src="http://www.imagemagick.org/fancybox/helpers/jquery.fancybox-thumbs.js?v=2.0.4"></script>
  <script type="text/javascript">
  	$(document).ready(function() {
  		$(".fancybox").fancybox();
  	});
  </script>
  <!-- ImageMagick style -->
  <link rel="stylesheet" href="http://www.localhost/cse/style/look/default.css" type="text/css" />
  <style type="text/css" media="all">
    @import url("../www/magick.css");
  </style>
</head>

<body id="www-imagemagick-org">
<div class="titlebar">
<div style="margin: 17px auto; float: left;">
  <script type="text/javascript">
  <!--
    google_ad_client = "pub-3129977114552745";
    google_ad_slot = "5439289906";
    google_ad_width = 728;
    google_ad_height = 90;
  //-->
  </script>
  <script type="text/javascript"
    src="http://localhost/pagead/show_ads.js">
  </script>
</div>
<a href="../discourse-server">
  <img src="../images/logo.jpg"
  alt="ImageMagick Logo"
  style="width: 123px; height: 118px; border: 0px; float: right;" /></a>
<a href="../index.html">
  <img src="../images/sprite.jpg"
  alt="ImageMagick Sprite"
  style="width: 114px; height: 118px; border: 0px; float: right;" /></a>
</div>

<div class="westbar">

<div class="menu">
  <a title="About ImageMagick" href="../index.html">About ImageMagick</a>
</div>
<div class="menu">
  <a title="Binary Releases" href="binary-releases.html">Binary Releases</a>
</div>
<div class="sub">
    <a title="Binary Release: Unix" href="binary-releases.html#unix">Unix</a>
</div>
<div class="sub">
    <a title="Binary Release: MacOS X" href="binary-releases.html#macosx">Mac OS X</a>
</div>
<div class="sub">
    <a title="Binary Release: iOS" href="binary-releases.html#iOS">iOS</a>
</div>
<div class="sub">
    <a title="Binary Release: Windows" href="binary-releases.html#windows">Windows</a>
</div>
<div class="sep"></div>
<div class="menu">
  <a title="Command-line Tools" href="command-line-tools.html">Command-line Tools</a>
</div>
<div class="sub">
    <a title="Command-line Tools: Processing" href="command-line-processing.html">Processing</a>
</div>
<div class="sub">
    <a title="Command-line Tools: Options" href="command-line-options.html">Options</a>
</div>
<div class="sub">
    <a title="Command-line Tools: Usage" href="http://www.imagemagick.org/Usage/">Usage</a>
</div>
<div class="menu">
  <a title="Program Interfaces" href="api.html">Program Interfaces</a>
</div>
<div class="sub">
    <a title="Program Interface: MagickWand" href="magick-wand.html">MagickWand</a>
</div>
<div class="sub">
    <a title="Program Interface: MagickCore" href="magick-core.html">MagickCore</a>
</div>
<div class="sub">
    <a title="Program Interface: PerlMagick" href="perl-magick.html">PerlMagick</a>
</div>
<div class="sub">
    <a title="Program Interface: Magick++" href="magick++.html">Magick++</a>
</div>
<div class="sep"></div>
<div  class="menu">
   <a title="Install from Source" href="install-source.html">Install from Source</a>
</div>
<div class="sub">
    <a title="Install from Source: Unix" href="install-source.html#unix">Unix</a>
</div>
<div class="sub">
    <a title="Install from Source: Windows" href="install-source.html#windows">Windows</a>
 </div>
<div class="menu">
  <a title="Resources" href="resources.html">Resources</a>
</div>
<div class="menu">
  <a title="Architecture" href="architecture.html">Architecture</a>
</div>
<div class="menu">
  <a title="Download" href="download.html">Download</a>
</div>
<div class="sep"></div>
<div class="menu">
  <a title="Search" href="http://www.imagemagick.org/script/search.php">Search</a>
</div>
<div class="sep"></div>
<div class="menu">
  <a title="Site Map" href="sitemap.html">Site Map</a>
</div>
<div  class="sub">
  <a title="Site Map: Links" href="links.html">Links</a>
</div>
<div class="sep"></div>
<div class="menu">
  <a rel="follow" title="Sponsors" href="support.html">Sponsors:</a>

  <a href="http://www.networkredux.com"> <img src="../images/networkredux.png" width="140" height="31" alt="[sponsor]" style="margin-top: 4px; margin-left: 4px; border: 0px; float: left;" /></a>
  <a href="http://www.dinodirect.com/ipads-tablets/"> <img src="../images/dino-direct.jpg" width="140" height="90" alt="[sponsor]" style="margin-top: 4px; margin-left: 4px; border: 0px; float: left;" /></a><!-- 201208010120 mickey@163... -->
<div class="sponsbox">
<div class="sponsor">
  <a rel="follow" title="Sponsor: The Fastest &amp; Easiest Way to Find Images" href="http://www.graphicsfactory.com">The Fastest &amp; Easiest Way to Find Images</a><!-- 201210010270 graphicsfac... -->
</div>
<div class="sponsor">
  <a rel="follow" title="Sponsor: VPS" href="http://www.interdominios.com/vps">VPS</a><!-- 201209010090 barsh@inter... -->
</div>
<div class="sponsor">
  <a rel="follow" title="Werbebanner Werbeplane" href="http://www.allesbanner.de">Werbebanner Werbeplane</a><!-- 201212010450 info@druck... -->
</div>
<div class="sponsor">
  <a rel="follow" title="Entertainment News &amp; Photos" href="http://www.zimbio.com">Entertainment News &amp; Photos</a><!-- 201211010540 bd@zimb... -->
</div>
<div class="sponsor">
  <a rel="follow" title="Sponsor: LED24" href="http://led24.de/">LED24</a><!-- 201207010270 info@led24... -->
</div>
<div class="sponsor">
  <a rel="follow" title="Sponsor: Best Website Hosting" href="http://www.top-cheap-web-hosting.com">Best Website Hosting</a><!-- 201304010090 eunge.liu-->
</div>
<div class="sponsor">
  <a rel="follow" title="Android Tablet" href="http://www.dinodirect.com/ipads-tablets/">Android Tablet</a><!-- 201208010120 mickey@163... -->
</div>
<div class="sponsor">
  <a rel="follow" title="Sponsor: Web Site Hosting" href="http://webhostinggeeks.com">Web Site Hosting</a><!-- 201302010900 funds@enmob... -->
</div>
<div class="sponsor">
   <a rel="follow" title="Sponsor: Premium Quality Stock Photos" href="http://www.f1online.pro/en/">Premium Quality Stock Photos</a><!-- 2012080100540 ... -->
</div>
<div class="sponsor">
   <a rel="follow" title="Sponsor: Druckerei" href="http://print24.com/de/">Druckerei</a><!-- 2012070100250 ... -->
</div>
<div class="sponsor">
  <a rel="follow" title="Sponsor: Managed Server" href="http://www.robhost.de">Managed Server</a><!-- 201210010720 klikics... -->
</div>
<div class="sponsor">
  <a rel="follow" title="Sponsor: Druckerei" href="http://www.allesdruck.de">Druckerei</a><!-- 201303011500 r.leo -->
</div>
<div class="sponsor">
   <a rel="follow" title="Sponsor: Free Catalogs" href="http://www.who-sells-it.com/">Free Catalogs</a><!-- 20120801000600 -->
</div>
<div class="sponsor">
   <a rel="follow" title="Sponsor: Web Hosting" href="http://www.hostucan.com">Web Hosting</a><!-- 2012120100150 racent marketing@webhosting...-->
</div>
</div>
</div>
</div>

<div class="eastbar">
  <div class="g-plusone" id="gplusone"></div>
  <script type="text/javascript">
    window.___gcfg = {
      lang: 'en-US'
    };

    (function() {
      var po = document.createElement('offline-script');
      po.type = 'text/javascript'; po.async = true;
      po.src = 'https://apis.localhost/js/plusone.js';
      var script = document.getElementsByTagName('offline-script')[0];
      script.parentNode.insertBefore(po, script);
    })();
    var gplusone = document.getElementById("gplusone");
    gplusone.setAttribute("data-size","medium");
    gplusone.setAttribute("data-count","false");
  </script>
</div>

<div class="main">

<h1>ImageMagick Escapes</h1>
<p class="navigation-index"></p>

<div class="doc-section">
<p>Use the <a href="command-line-options.html#format_identify_"
>-format</a> option to print properties associated with an image in a format
of your choosing. You can include the image filename, type, width, height,
EXIF data, or other image attributes by embedding special format
characters:</p>

<pre class="text">
   %b   file size of image read in
   %c   comment meta-data property
   %d   directory component of path
   %e   filename extension or suffix
   %f   filename (including suffix)
   %g   layer canvas page geometry   ( = %Wx%H%X%Y )
   %h   current image height in pixels
   %i   image filename (note: becomes output filename for "info:")
   %k   CALCULATED: number of unique colors
   %l   label meta-data property
   %m   image file format (file magic)
   %n   number of images in current image sequence
   %o   output filename  (used for delegates)
   %p   index of image in current image list
   %q   quantum depth (compile-time constant)
   %r   image class and colorspace
   %s   scene number (from input unless re-assigned)
   %t   filename without directory or extension (suffix)
   %u   unique temporary filename (used for delegates)
   %w   current width in pixels
   %x   x resolution (density)
   %y   y resolution (density)
   %z   image depth (as read in unless modified, image save depth)
   %A   image transparency channel enabled (true/false)
   %C   image compression type
   %D   image GIF dispose method
   %G   image size ( = %wx%h )
   %H   page (canvas) height
   %M   Magick filename (original file exactly as given,  including read mods)
   %O   page (canvas) offset ( = %X%Y )
   %P   page (canvas) size ( = %Wx%H )
   %Q   image compression quality ( 0 = default )
   %S   ?? scenes ??
   %T   image time delay (in centi-seconds)
   %W   page (canvas) width
   %X   page (canvas) x offset (including sign)
   %Y   page (canvas) y offset (including sign)
   %Z   unique filename (used for delegates)
   %@   CALCULATED: trim bounding box (without actually trimming)
   %#   CALCULATED: 'signature' hash of image values
   %%   a percent sign
   \n   newline
   \r   carriage return
   &lt; less-than character.
   &gt; greater-than character.
  &amp; ampersand character.
</pre>

<p>Here is a sample command and its output
for an image with filename <kbd>bird.miff</kbd> and whose width is 512 and height is 480.</p>

<p class='crt'><span class="crtprompt"> $ </span><span class='crtin'>identify -format "%m:%f %wx%h" bird.miff</span><span class='crtout'>MIFF:bird.miff 512x480</span></p>
<p>Additional properties are recognized when enclosed in braces:</p>

<pre class="text">
   %[base]                 base filename, no suffixes (as %t)
   %[channels]             ??? channels in use - colorspace ???
   %[colorspace]           Colorspace of Image Data (excluding transparency)
   %[copyright]            ImageMagick Copyright String
   %[depth]                depth of image for write (as input unless changed)
   %[directory]            directory part of filename (as %d)
   %[extension]            extention part of filename (as %e)
   %[group]                ??? window group ???
   %[height]               original height of image (when it was read in)
   %[kurtosis]             CALCULATED: kurtosis statistic of image
   %[magick]               coder used to read image (not the file suffix)
   %[max]                  CALCULATED: maximum value statistic of image
   %[mean]                 CALCULATED: average value statistic of image
   %[min]                  CALCULATED: minimum value statistic of image
   %[name]                 The original name of the image
   %[opaque]               CALCULATED: is image fully-opaque?
   %[page]                 Virtual canvas (page) geometry
   %[resolution.y]         X density (resolution) without units
   %[resolution.x]         Y density (resolution) without units
   %[zero]                 zero (unique filename for delegates
   %[scene]                original scene number of image in input file
   %[size]                 original size of image (when it was read in)
   %[skewness]             CALCULATED: skewness statistic of image
   %[standard-deviation]   CALCULATED: standard-deviation statistic of image
   %[unique]               unique temporary filename ???
   %[version]              Version Information of this running ImageMagick
   %[width]                original width of image (when it was read in)
   %[*]                    list of image property strings
</pre>

<p>Use <kbd>%[fx:...]</kbd> to evaluate <a href="fx.html">FX</a> expressions:</p>

<pre class="text">
   %[fx:<em class="arg">expression</em>]
</pre>

<p>Use <kbd>pixel:</kbd> to evaluate a pixel color as defined by the <a href="fx.html">FX</a> expression:</p>

<pre class="text">
   %[pixel:<em class="arg">expression</em>]
</pre>

<p>You can also use the following special formatting syntax to print EXIF
information contained in the file:</p>

<pre class="text">
   %[EXIF:<em class="arg">tag</em>]
</pre>

<p>Choose <em class="arg">tag</em> from the following:</p>

<pre class="text">
   *  (print all EXIF tags, in keyword=data format)
   !  (print all EXIF tags, in tag_number data format)
   #hhhh (print data for EXIF tag #hhhh)
   ImageWidth
   ImageLength
   BitsPerSample
   Compression
   PhotometricInterpretation
   FillOrder
   DocumentName
   ImageDescription
   Make
   Model
   StripOffsets
   Orientation
   SamplesPerPixel
   RowsPerStrip
   StripByteCounts
   XResolution
   YResolution
   PlanarConfiguration
   ResolutionUnit
   TransferFunction
   Software
   DateTime
   Artist
   WhitePoint
   PrimaryChromaticities
   TransferRange
   JPEGProc
   JPEGInterchangeFormat
   JPEGInterchangeFormatLength
   YCbCrCoefficients
   YCbCrSubSampling
   YCbCrPositioning
   ReferenceBlackWhite
   CFARepeatPatternDim
   CFAPattern
   BatteryLevel
   Copyright
   ExposureTime
   FNumber
   IPTC/NAA
   EXIFOffset
   InterColorProfile
   ExposureProgram
   SpectralSensitivity
   GPSInfo
   ISOSpeedRatings
   OECF
   EXIFVersion
   DateTimeOriginal
   DateTimeDigitized
   ComponentsConfiguration
   CompressedBitsPerPixel
   ShutterSpeedValue
   ApertureValue
   BrightnessValue
   ExposureBiasValue
   MaxApertureValue
   SubjectDistance
   MeteringMode
   LightSource
   Flash
   FocalLength
   MakerNote
   UserComment
   SubSecTime
   SubSecTimeOriginal
   SubSecTimeDigitized
   FlashPixVersion
   ColorSpace
   EXIFImageWidth
   EXIFImageLength
   InteroperabilityOffset
   FlashEnergy
   SpatialFrequencyResponse
   FocalPlaneXResolution
   FocalPlaneYResolution
   FocalPlaneResolutionUnit
   SubjectLocation
   ExposureIndex
   SensingMethod
   FileSource
   SceneType
</pre>

<p>Surround the format specification with quotation marks to prevent your shell from misinterpreting any spaces and square brackets.</p>

<p>The following special formatting syntax can be used to print IPTC information contained in the file:</p>

<pre class="text">
   %[IPTC:<em class="arg">dataset</em>:<em class="arg">record</em>]
</pre>

<p>Select <em class="arg">dataset</em> and <em class="arg">record</em> from the following:</p>

<pre class="text">
    Envelope Record
      1:00  Model Version
      1:05  Destination
      1:20  File Format
      1:22  File Format Version
      1:30  Service Identifier
      1:40  Envelope Number
      1:50  Product ID
      1:60  Envelope Priority
      1:70  Date Sent
      1:80  Time Sent
      1:90  Coded Character Set
      1:100  UNO (Unique Name of Object)
      1:120  ARM Identifier
      1:122  ARM Version

    Application Record
      2:00  Record Version
      2:03  Object Type Reference
      2:05  Object Name (Title)
      2:07  Edit Status
      2:08  Editorial Update
      2:10  Urgency
      2:12  Subject Reference
      2:15  Category
      2:20  Supplemental Category
      2:22  Fixture Identifier
      2:25  Keywords
      2:26  Content Location Code
      2:27  Content Location Name
      2:30  Release Date
      2:35  Release Time
      2:37  Expiration Date
      2:35  Expiration Time
      2:40  Special Instructions
      2:42  Action Advised
      2:45  Reference Service
      2:47  Reference Date
      2:50  Reference Number
      2:55  Date Created
      2:60  Time Created
      2:62  Digital Creation Date
      2:63  Digital Creation Time
      2:65  Originating Program
      2:70  Program Version
      2:75  Object Cycle
      2:80  By-Line (Author)
      2:85  By-Line Title (Author Position) [Not used in Photoshop 7]
      2:90  City
      2:92  Sub-Location
      2:95  Province/State
      2:100  Country/Primary Location Code
      2:101  Country/Primary Location Name
      2:103  Original Transmission Reference
      2:105  Headline
      2:110  Credit
      2:115  Source
      2:116  Copyright Notice
      2:118  Contact
      2:120  Caption/Abstract
      2:122  Caption Writer/Editor
      2:125  Rasterized Caption
      2:130  Image Type
      2:131  Image Orientation
      2:135  Language Identifier
      2:150  Audio Type
      2:151  Audio Sampling Rate
      2:152  Audio Sampling Resolution
      2:153  Audio Duration
      2:154  Audio Outcue
      2:200  ObjectData Preview File Format
      2:201  ObjectData Preview File Format Version
      2:202  ObjectData Preview Data

    Pre-ObjectData Descriptor Record
      7:10   Size Mode
      7:20   Max Subfile Size
      7:90   ObjectData Size Announced
      7:95   Maximum ObjectData Size

    ObjectData Record
      8:10   Subfile

    Post ObjectData Descriptor Record
      9:10   Confirmed ObjectData Size
</pre>
</div>

</div>

<div id="linkbar">
    <span id="linkbar-west">&nbsp;</span>
    <span id="linkbar-center">
      <a href="../discourse-server">Discourse Server</a> &bull;
      <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a>
    </span>
    <span id="linkbar-east">&nbsp;</span>
  </div>
  <div class="footer">
    <span id="footer-west">&copy; 1999-2013 ImageMagick Studio LLC</span>
    <span id="footer-east"> <a href="contact.html">Contact the Wizards</a></span>
  </div>
  <div style="clear: both; margin: 0; width: 100%; "></div>
  <script type="text/javascript">
    var _gaq = _gaq || [];
    _gaq.push(['_setAccount', 'UA-17690367-1']);
    _gaq.push(['_trackPageview']);

    (function() {
      var ga = document.createElement('offline-script'); ga.type = 'text/javascript'; ga.async = true;
      ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.localhost/ga.js';
      var s = document.getElementsByTagName('offline-script')[0]; s.parentNode.insertBefore(ga, s);
    })();
  </script>
</body>
</html>
