<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html > <head><title>The VIPS file format</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> <meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> <!-- 3,html --> <meta name="src" content="vipsmanual.tex"> <meta name="date" content="2009-11-30 16:39:00"> <link rel="stylesheet" type="text/css" href="vipsmanual.css"> </head><body > <!--l. 1--><div class="crosslinks"><p class="noindent">[<a href="vipsmanualse3.html" >next</a>] [<a href="vipsmanualse1.html" >prev</a>] [<a href="vipsmanualse1.html#tailvipsmanualse1.html" >prev-tail</a>] [<a href="#tailvipsmanualse2.html">tail</a>] [<a href="vipsmanualch1.html#vipsmanualse2.html" >up</a>] </p></div> <h3 class="sectionHead"><span class="titlemark">1.2 </span> <a id="x7-70001.2"></a>The VIPS file format</h3> <!--l. 3--><p class="noindent" >VIPS has its own very simple file format. It is used inside VIPS to hold images during computation. You can save images in VIPS format if you want, but the VIPS format is not widely used and you may have problems reading your images into other packages. <!--l. 8--><p class="indent" > If you intend to keep an image, it’s much better to save it as TIFF, JPEG, PNG, PBM/PGM/PPM or HDR. VIPS can transparently read and write all these formats. <!--l. 12--><p class="noindent" > <h4 class="subsectionHead"><span class="titlemark">1.2.1 </span> <a id="x7-80001.2.1"></a>VIPS file header</h4> <!--l. 15--><p class="noindent" >All VIPS image files start with a 64-byte header giving basic information about the image dimensions, see Table <a href="#x7-80011">1.1<!--tex4ht:ref: fg:header --></a>. This is followed by the image data. This is usually just the pixel values in native format (ie. the byte order used by the machine that wrote the file) laid out left-to-right and top-to-bottom. After the image data comes a block of optional XML which holds extra image metadata, such as ICC profiles and image history. You can use the command-line program <span class="obeylines-h"><span class="verb"><span class="pcrr7t-">header</span></span></span> to extract the XML from an image and <span class="obeylines-h"><span class="verb"><span class="pcrr7t-">edvips</span></span></span> to replace it, see the man pages. <!--l. 24--><p class="indent" > The <span class="pcrr7t-">Type </span>field, the <span class="pcrr7t-">Xres</span>/<span class="pcrr7t-">Yres </span>fields, and the <span class="pcrr7t-">Xoffset</span>/<span class="pcrr7t-">Yoffset </span>fields are advisory. VIPS maintains their value (if you convert an image to <span class="ptmri7t-">CIE</span><span class="ptmri7t-"> </span><span class="cmmi-10">L</span><span class="cmsy-7">*</span><span class="cmmi-10">a</span><span class="cmsy-7">*</span><span class="cmmi-10">b</span><span class="cmsy-7">*</span> colour space with <span class="pcrr7t-">im</span><span class="pcrr7t-">_XYZ2Lab()</span>, for example, VIPS will set <span class="pcrr7t-">Type </span>to be <span class="pcrr7t-">IM</span><span class="pcrr7t-">_TYPE</span><span class="pcrr7t-">_LAB</span>), but never uses these values itself in determining the action of an image processing function. These fields are to help the user and to help application programs built on VIPS which are trying to present image data to the user in a meaningful way. <!--l. 33--><p class="indent" > The <span class="pcrr7t-">BandFmt</span>, <span class="pcrr7t-">Coding </span>and <span class="pcrr7t-">Type </span>fields can take the values shown in tables <a href="#x7-80022">1.2<!--tex4ht:ref: fg:bandfmt --></a>, <a href="#x7-80033">1.3<!--tex4ht:ref: fg:coding --></a> and <a href="#x7-80044">1.4<!--tex4ht:ref: fg:type --></a>. The C++ and Python names for these values are slightly different, for historical reasons. <!--l. 39--><p class="indent" > <a id="x7-80011"></a><hr class="float"><div class="float" > <div class="center" > <!--l. 39--><p class="noindent" > <div class="tabular"> <table id="TBL-1" class="tabular" cellspacing="0" cellpadding="0" rules="groups" ><colgroup id="TBL-1-1g"><col id="TBL-1-1"></colgroup><colgroup id="TBL-1-2g"><col id="TBL-1-2"></colgroup><colgroup id="TBL-1-3g"><col id="TBL-1-3"></colgroup><tr class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-1-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-1-1" class="td11">Bytes</td><td style="white-space:nowrap; text-align:left;" id="TBL-1-1-2" class="td11">Represent </td><td style="white-space:nowrap; text-align:left;" id="TBL-1-1-3" class="td11">VIPS name </td> </tr><tr class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-1-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-2-1" class="td11">0–3 </td><td style="white-space:nowrap; text-align:left;" id="TBL-1-2-2" class="td11">VIPS magic number (in hex, 08 f2 f6 b6) </td><td style="white-space:nowrap; text-align:left;" id="TBL-1-2-3" class="td11"> </td> </tr><tr style="vertical-align:baseline;" id="TBL-1-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-3-1" class="td11">4–7 </td><td style="white-space:nowrap; text-align:left;" id="TBL-1-3-2" class="td11">Number of pels per horizontal line (integer)</td><td style="white-space:nowrap; text-align:left;" id="TBL-1-3-3" class="td11"><span class="pcrr7t-">Xsize </span></td> </tr><tr style="vertical-align:baseline;" id="TBL-1-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-4-1" class="td11">8–11 </td><td style="white-space:nowrap; text-align:left;" id="TBL-1-4-2" class="td11">Number of horizontal lines (integer) </td><td style="white-space:nowrap; text-align:left;" id="TBL-1-4-3" class="td11"><span class="pcrr7t-">Ysize </span></td> </tr><tr style="vertical-align:baseline;" id="TBL-1-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-5-1" class="td11">12–15</td><td style="white-space:nowrap; text-align:left;" id="TBL-1-5-2" class="td11">Number of bands (integer) </td><td style="white-space:nowrap; text-align:left;" id="TBL-1-5-3" class="td11"><span class="pcrr7t-">Bands </span></td> </tr><tr style="vertical-align:baseline;" id="TBL-1-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-6-1" class="td11">16–19</td><td style="white-space:nowrap; text-align:left;" id="TBL-1-6-2" class="td11">Unused (legacy) </td><td style="white-space:nowrap; text-align:left;" id="TBL-1-6-3" class="td11"><span class="pcrr7t-">Bbits </span></td> </tr><tr style="vertical-align:baseline;" id="TBL-1-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-7-1" class="td11">20–23</td><td style="white-space:nowrap; text-align:left;" id="TBL-1-7-2" class="td11">Band format (eg. <span class="pcrr7t-">IM</span><span class="pcrr7t-">_BANDFMT</span><span class="pcrr7t-">_USHORT</span>)</td><td style="white-space:nowrap; text-align:left;" id="TBL-1-7-3" class="td11"><span class="pcrr7t-">BandFmt </span></td> </tr><tr style="vertical-align:baseline;" id="TBL-1-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-8-1" class="td11">24–27</td><td style="white-space:nowrap; text-align:left;" id="TBL-1-8-2" class="td11">Coding type (eg. <span class="pcrr7t-">IM</span><span class="pcrr7t-">_CODING</span><span class="pcrr7t-">_NONE</span>) </td><td style="white-space:nowrap; text-align:left;" id="TBL-1-8-3" class="td11"><span class="pcrr7t-">Coding </span></td> </tr><tr style="vertical-align:baseline;" id="TBL-1-9-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-9-1" class="td11">28–31</td><td style="white-space:nowrap; text-align:left;" id="TBL-1-9-2" class="td11">Type (eg. <span class="pcrr7t-">IM</span><span class="pcrr7t-">_TYPE</span><span class="pcrr7t-">_LAB</span>) </td><td style="white-space:nowrap; text-align:left;" id="TBL-1-9-3" class="td11"><span class="pcrr7t-">Type </span></td> </tr><tr style="vertical-align:baseline;" id="TBL-1-10-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-10-1" class="td11">32–35</td><td style="white-space:nowrap; text-align:left;" id="TBL-1-10-2" class="td11">Horizontal resolution (float, pixels mm<sup><span class="cmsy-7">-</span><span class="cmr-7">1</span></sup>) </td><td style="white-space:nowrap; text-align:left;" id="TBL-1-10-3" class="td11"><span class="pcrr7t-">Xres </span></td> </tr><tr style="vertical-align:baseline;" id="TBL-1-11-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-11-1" class="td11">36–39</td><td style="white-space:nowrap; text-align:left;" id="TBL-1-11-2" class="td11">Vertical resolution (float, pixels mm<sup><span class="cmsy-7">-</span><span class="cmr-7">1</span></sup>) </td><td style="white-space:nowrap; text-align:left;" id="TBL-1-11-3" class="td11"><span class="pcrr7t-">Yres </span></td> </tr><tr style="vertical-align:baseline;" id="TBL-1-12-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-12-1" class="td11">40–43</td><td style="white-space:nowrap; text-align:left;" id="TBL-1-12-2" class="td11">Unused (legacy) </td><td style="white-space:nowrap; text-align:left;" id="TBL-1-12-3" class="td11"><span class="pcrr7t-">Length </span></td> </tr><tr style="vertical-align:baseline;" id="TBL-1-13-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-13-1" class="td11">44–45</td><td style="white-space:nowrap; text-align:left;" id="TBL-1-13-2" class="td11">Unused (legacy) </td><td style="white-space:nowrap; text-align:left;" id="TBL-1-13-3" class="td11"><span class="pcrr7t-">Compression</span></td> </tr><tr style="vertical-align:baseline;" id="TBL-1-14-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-14-1" class="td11">46–47</td><td style="white-space:nowrap; text-align:left;" id="TBL-1-14-2" class="td11">Unused (legacy) </td><td style="white-space:nowrap; text-align:left;" id="TBL-1-14-3" class="td11"><span class="pcrr7t-">Level </span></td> </tr><tr style="vertical-align:baseline;" id="TBL-1-15-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-15-1" class="td11">48–51</td><td style="white-space:nowrap; text-align:left;" id="TBL-1-15-2" class="td11">Horizontal offset of origin </td><td style="white-space:nowrap; text-align:left;" id="TBL-1-15-3" class="td11"><span class="pcrr7t-">Xoffset </span></td> </tr><tr style="vertical-align:baseline;" id="TBL-1-16-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-16-1" class="td11">52–55</td><td style="white-space:nowrap; text-align:left;" id="TBL-1-16-2" class="td11">Vertical offset of origin </td><td style="white-space:nowrap; text-align:left;" id="TBL-1-16-3" class="td11"><span class="pcrr7t-">Yoffset </span></td> </tr><tr style="vertical-align:baseline;" id="TBL-1-17-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-17-1" class="td11">56–63</td><td style="white-space:nowrap; text-align:left;" id="TBL-1-17-2" class="td11">For future expansion (all zeros for now) </td><td style="white-space:nowrap; text-align:left;" id="TBL-1-17-3" class="td11"> </td> </tr><tr class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-1-18-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-18-1" class="td11"> </td></tr></table></div></div> <br /><div class="caption" ><span class="id">Table 1.1: </span><span class="content">VIPS header</span></div><!--tex4ht:label?: x7-80011 --> </div><hr class="endfloat" /> <!--l. 67--><p class="indent" > <a id="x7-80022"></a><hr class="float"><div class="float" > <div class="center" > <!--l. 67--><p class="noindent" > <div class="tabular"> <table id="TBL-2" class="tabular" cellspacing="0" cellpadding="0" rules="groups" ><colgroup id="TBL-2-1g"><col id="TBL-2-1"></colgroup><colgroup id="TBL-2-2g"><col id="TBL-2-2"></colgroup><colgroup id="TBL-2-3g"><col id="TBL-2-3"></colgroup><colgroup id="TBL-2-4g"><col id="TBL-2-4"></colgroup><tr class="hline"><td><hr></td><td><hr></td><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-2-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-1-1" class="td11"><span class="pcrr7t-">BandFmt </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-2-1-2" class="td11">C++ and Python name</td><td style="white-space:nowrap; text-align:left;" id="TBL-2-1-3" class="td11">Value</td><td style="white-space:nowrap; text-align:left;" id="TBL-2-1-4" class="td11">Meaning </td> </tr><tr class="hline"><td><hr></td><td><hr></td><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-2-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-2-1" class="td11"><span class="pcrr7t-">IM</span><span class="pcrr7t-">_BANDFMT</span><span class="pcrr7t-">_NOTSET </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-2-2-2" class="td11"><span class="pcrr7t-">FMTNOTSET </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-2-2-3" class="td11">-1 </td><td style="white-space:nowrap; text-align:left;" id="TBL-2-2-4" class="td11"> </td></tr><tr style="vertical-align:baseline;" id="TBL-2-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-3-1" class="td11"><span class="pcrr7t-">IM</span><span class="pcrr7t-">_BANDFMT</span><span class="pcrr7t-">_UCHAR </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-2-3-2" class="td11"><span class="pcrr7t-">FMTUCHAR </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-2-3-3" class="td11">0 </td><td style="white-space:nowrap; text-align:left;" id="TBL-2-3-4" class="td11">Unsigned 8-bit int</td> </tr><tr style="vertical-align:baseline;" id="TBL-2-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-4-1" class="td11"><span class="pcrr7t-">IM</span><span class="pcrr7t-">_BANDFMT</span><span class="pcrr7t-">_CHAR </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-2-4-2" class="td11"><span class="pcrr7t-">FMTCHAR </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-2-4-3" class="td11">1 </td><td style="white-space:nowrap; text-align:left;" id="TBL-2-4-4" class="td11">Signed 8-bit int </td> </tr><tr style="vertical-align:baseline;" id="TBL-2-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-5-1" class="td11"><span class="pcrr7t-">IM</span><span class="pcrr7t-">_BANDFMT</span><span class="pcrr7t-">_USHORT </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-2-5-2" class="td11"><span class="pcrr7t-">FMTUSHORT </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-2-5-3" class="td11">2 </td><td style="white-space:nowrap; text-align:left;" id="TBL-2-5-4" class="td11">Unsigned 16-bit int </td> </tr><tr style="vertical-align:baseline;" id="TBL-2-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-6-1" class="td11"><span class="pcrr7t-">IM</span><span class="pcrr7t-">_BANDFMT</span><span class="pcrr7t-">_SHORT </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-2-6-2" class="td11"><span class="pcrr7t-">FMTSHORT </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-2-6-3" class="td11">3 </td><td style="white-space:nowrap; text-align:left;" id="TBL-2-6-4" class="td11">Signed 16-bit int </td> </tr><tr style="vertical-align:baseline;" id="TBL-2-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-7-1" class="td11"><span class="pcrr7t-">IM</span><span class="pcrr7t-">_BANDFMT</span><span class="pcrr7t-">_UINT </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-2-7-2" class="td11"><span class="pcrr7t-">FMTUINT </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-2-7-3" class="td11">4 </td><td style="white-space:nowrap; text-align:left;" id="TBL-2-7-4" class="td11">Unsigned 32-bit int </td> </tr><tr style="vertical-align:baseline;" id="TBL-2-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-8-1" class="td11"><span class="pcrr7t-">IM</span><span class="pcrr7t-">_BANDFMT</span><span class="pcrr7t-">_INT </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-2-8-2" class="td11"><span class="pcrr7t-">FMTINT </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-2-8-3" class="td11">5 </td><td style="white-space:nowrap; text-align:left;" id="TBL-2-8-4" class="td11">Signed 32-bit int </td> </tr><tr style="vertical-align:baseline;" id="TBL-2-9-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-9-1" class="td11"><span class="pcrr7t-">IM</span><span class="pcrr7t-">_BANDFMT</span><span class="pcrr7t-">_FLOAT </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-2-9-2" class="td11"><span class="pcrr7t-">FMTFLOAT </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-2-9-3" class="td11">6 </td><td style="white-space:nowrap; text-align:left;" id="TBL-2-9-4" class="td11">32-bit IEEE float </td> </tr><tr style="vertical-align:baseline;" id="TBL-2-10-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-10-1" class="td11"><span class="pcrr7t-">IM</span><span class="pcrr7t-">_BANDFMT</span><span class="pcrr7t-">_COMPLEX </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-2-10-2" class="td11"><span class="pcrr7t-">FMTCOMPLEX </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-2-10-3" class="td11">7 </td><td style="white-space:nowrap; text-align:left;" id="TBL-2-10-4" class="td11">Complex (2 floats) </td> </tr><tr style="vertical-align:baseline;" id="TBL-2-11-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-11-1" class="td11"><span class="pcrr7t-">IM</span><span class="pcrr7t-">_BANDFMT</span><span class="pcrr7t-">_DOUBLE </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-2-11-2" class="td11"><span class="pcrr7t-">FMTDOUBLE </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-2-11-3" class="td11">8 </td><td style="white-space:nowrap; text-align:left;" id="TBL-2-11-4" class="td11">64-bit IEEE double </td> </tr><tr style="vertical-align:baseline;" id="TBL-2-12-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-12-1" class="td11"><span class="pcrr7t-">IM</span><span class="pcrr7t-">_BANDFMT</span><span class="pcrr7t-">_DPCOMPLEX</span></td><td style="white-space:nowrap; text-align:left;" id="TBL-2-12-2" class="td11"><span class="pcrr7t-">FMTDPCOMPLEX </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-2-12-3" class="td11">9 </td><td style="white-space:nowrap; text-align:left;" id="TBL-2-12-4" class="td11">Complex (2 doubles)</td> </tr><tr class="hline"><td><hr></td><td><hr></td><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-2-13-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-13-1" class="td11"> </td></tr></table></div></div> <br /><div class="caption" ><span class="id">Table 1.2: </span><span class="content">Possible values for <span class="pcrr7t-">BandFmt</span></span></div><!--tex4ht:label?: x7-80022 --> </div><hr class="endfloat" /> <!--l. 90--><p class="indent" > <a id="x7-80033"></a><hr class="float"><div class="float" > <div class="center" > <!--l. 90--><p class="noindent" > <div class="tabular"><table id="TBL-3" class="tabular" cellspacing="0" cellpadding="0" rules="groups" ><colgroup id="TBL-3-1g"><col id="TBL-3-1"></colgroup><colgroup id="TBL-3-2g"><col id="TBL-3-2"></colgroup><colgroup id="TBL-3-3g"><col id="TBL-3-3"></colgroup><colgroup id="TBL-3-4g"><col id="TBL-3-4"></colgroup><tr class="hline"><td><hr></td><td><hr></td><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-3-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-1-1" class="td11"><span class="pcrr7t-">Coding </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-3-1-2" class="td11">C++ and Python name</td><td style="white-space:nowrap; text-align:left;" id="TBL-3-1-3" class="td11">Value</td><td style="white-space:nowrap; text-align:left;" id="TBL-3-1-4" class="td11">Meaning </td> </tr><tr class="hline"><td><hr></td><td><hr></td><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-3-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-2-1" class="td11"><span class="pcrr7t-">IM</span><span class="pcrr7t-">_CODING</span><span class="pcrr7t-">_NONE</span></td><td style="white-space:nowrap; text-align:left;" id="TBL-3-2-2" class="td11"><span class="pcrr7t-">NOCODING </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-3-2-3" class="td11">0 </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-2-4" class="td11">VIPS computation format</td> </tr><tr style="vertical-align:baseline;" id="TBL-3-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-3-1" class="td11"><span class="pcrr7t-">IM</span><span class="pcrr7t-">_CODING</span><span class="pcrr7t-">_LABQ</span></td><td style="white-space:nowrap; text-align:left;" id="TBL-3-3-2" class="td11"><span class="pcrr7t-">LABQ </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-3-3-3" class="td11">2 </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-3-4" class="td11">LABQ storage format </td> </tr><tr style="vertical-align:baseline;" id="TBL-3-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-4-1" class="td11"><span class="pcrr7t-">IM</span><span class="pcrr7t-">_CODING</span><span class="pcrr7t-">_RAD </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-3-4-2" class="td11"><span class="pcrr7t-">RAD </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-3-4-3" class="td11">6 </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-4-4" class="td11">Radiance storage format </td> </tr><tr class="hline"><td><hr></td><td><hr></td><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-3-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-5-1" class="td11"> </td></tr></table></div></div> <br /><div class="caption" ><span class="id">Table 1.3: </span><span class="content">Possible values for <span class="pcrr7t-">Coding</span></span></div><!--tex4ht:label?: x7-80033 --> </div><hr class="endfloat" /> <!--l. 105--><p class="indent" > <a id="x7-80044"></a><hr class="float"><div class="float" > <div class="center" > <!--l. 105--><p class="noindent" > <div class="tabular"><table id="TBL-4" class="tabular" cellspacing="0" cellpadding="0" rules="groups" ><colgroup id="TBL-4-1g"><col id="TBL-4-1"></colgroup><colgroup id="TBL-4-2g"><col id="TBL-4-2"></colgroup><colgroup id="TBL-4-3g"><col id="TBL-4-3"></colgroup><colgroup id="TBL-4-4g"><col id="TBL-4-4"></colgroup><tr class="hline"><td><hr></td><td><hr></td><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-4-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-1-1" class="td11"><span class="pcrr7t-">Type </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-1-2" class="td11">C++ and Python name</td><td style="white-space:nowrap; text-align:left;" id="TBL-4-1-3" class="td11">Value</td><td style="white-space:nowrap; text-align:left;" id="TBL-4-1-4" class="td11">Meaning </td> </tr><tr class="hline"><td><hr></td><td><hr></td><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-4-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-2-1" class="td11"><span class="pcrr7t-">IM</span><span class="pcrr7t-">_TYPE</span><span class="pcrr7t-">_MULTIBAND</span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-2-2" class="td11"><span class="pcrr7t-">MULTIBAND </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-2-3" class="td11">0 </td><td style="white-space:nowrap; text-align:left;" id="TBL-4-2-4" class="td11">Some multiband image </td> </tr><tr style="vertical-align:baseline;" id="TBL-4-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-3-1" class="td11"><span class="pcrr7t-">IM</span><span class="pcrr7t-">_TYPE</span><span class="pcrr7t-">_B</span><span class="pcrr7t-">_W </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-3-2" class="td11"><span class="pcrr7t-">B</span><span class="pcrr7t-">_W </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-3-3" class="td11">1 </td><td style="white-space:nowrap; text-align:left;" id="TBL-4-3-4" class="td11">Some single band image </td> </tr><tr style="vertical-align:baseline;" id="TBL-4-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-4-1" class="td11"><span class="pcrr7t-">IM</span><span class="pcrr7t-">_TYPE</span><span class="pcrr7t-">_HISTOGRAM</span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-4-2" class="td11"><span class="pcrr7t-">HISTOGRAM </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-4-3" class="td11">10 </td><td style="white-space:nowrap; text-align:left;" id="TBL-4-4-4" class="td11">Histogram or LUT </td> </tr><tr style="vertical-align:baseline;" id="TBL-4-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-5-1" class="td11"><span class="pcrr7t-">IM</span><span class="pcrr7t-">_TYPE</span><span class="pcrr7t-">_FOURIER </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-5-2" class="td11"><span class="pcrr7t-">FOURIER </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-5-3" class="td11">24 </td><td style="white-space:nowrap; text-align:left;" id="TBL-4-5-4" class="td11">Image in Fourier space </td> </tr><tr style="vertical-align:baseline;" id="TBL-4-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-6-1" class="td11"><span class="pcrr7t-">IM</span><span class="pcrr7t-">_TYPE</span><span class="pcrr7t-">_XYZ </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-6-2" class="td11"><span class="pcrr7t-">XYZ </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-6-3" class="td11">12 </td><td style="white-space:nowrap; text-align:left;" id="TBL-4-6-4" class="td11"><span class="ptmri7t-">CIE XYZ </span>colour space </td> </tr><tr style="vertical-align:baseline;" id="TBL-4-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-7-1" class="td11"><span class="pcrr7t-">IM</span><span class="pcrr7t-">_TYPE</span><span class="pcrr7t-">_LAB </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-7-2" class="td11"><span class="pcrr7t-">LAB </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-7-3" class="td11">13 </td><td style="white-space:nowrap; text-align:left;" id="TBL-4-7-4" class="td11"><span class="ptmri7t-">CIE</span><span class="ptmri7t-"> </span><span class="cmmi-10">L</span><span class="cmsy-7">*</span><span class="cmmi-10">a</span><span class="cmsy-7">*</span><span class="cmmi-10">b</span><span class="cmsy-7">*</span> colour space</td> </tr><tr style="vertical-align:baseline;" id="TBL-4-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-8-1" class="td11"><span class="pcrr7t-">IM</span><span class="pcrr7t-">_TYPE</span><span class="pcrr7t-">_CMYK </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-8-2" class="td11"><span class="pcrr7t-">CMYK </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-8-3" class="td11">15 </td><td style="white-space:nowrap; text-align:left;" id="TBL-4-8-4" class="td11"><span class="pcrr7t-">im</span><span class="pcrr7t-">_icc</span><span class="pcrr7t-">_export() </span></td> </tr><tr style="vertical-align:baseline;" id="TBL-4-9-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-9-1" class="td11"><span class="pcrr7t-">IM</span><span class="pcrr7t-">_TYPE</span><span class="pcrr7t-">_LABQ </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-9-2" class="td11"><span class="pcrr7t-">LABQ </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-9-3" class="td11">16 </td><td style="white-space:nowrap; text-align:left;" id="TBL-4-9-4" class="td11">32-bit <span class="ptmri7t-">CIE</span><span class="ptmri7t-"> </span><span class="cmmi-10">L</span><span class="cmsy-7">*</span><span class="cmmi-10">a</span><span class="cmsy-7">*</span><span class="cmmi-10">b</span><span class="cmsy-7">*</span> </td> </tr><tr style="vertical-align:baseline;" id="TBL-4-10-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-10-1" class="td11"><span class="pcrr7t-">IM</span><span class="pcrr7t-">_TYPE</span><span class="pcrr7t-">_RGB </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-10-2" class="td11"><span class="pcrr7t-">RGB </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-10-3" class="td11">17 </td><td style="white-space:nowrap; text-align:left;" id="TBL-4-10-4" class="td11">Some RGB </td> </tr><tr style="vertical-align:baseline;" id="TBL-4-11-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-11-1" class="td11"><span class="pcrr7t-">IM</span><span class="pcrr7t-">_TYPE</span><span class="pcrr7t-">_UCS </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-11-2" class="td11"><span class="pcrr7t-">UCS </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-11-3" class="td11">18 </td><td style="white-space:nowrap; text-align:left;" id="TBL-4-11-4" class="td11"><span class="ptmri7t-">UCS(1:1) </span>colour space </td> </tr><tr style="vertical-align:baseline;" id="TBL-4-12-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-12-1" class="td11"><span class="pcrr7t-">IM</span><span class="pcrr7t-">_TYPE</span><span class="pcrr7t-">_LCH </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-12-2" class="td11"><span class="pcrr7t-">LCH </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-12-3" class="td11">19 </td><td style="white-space:nowrap; text-align:left;" id="TBL-4-12-4" class="td11"><span class="ptmri7t-">CIE LCh </span>colour space </td> </tr><tr style="vertical-align:baseline;" id="TBL-4-13-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-13-1" class="td11"><span class="pcrr7t-">IM</span><span class="pcrr7t-">_TYPE</span><span class="pcrr7t-">_LABS </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-13-2" class="td11"><span class="pcrr7t-">LABS </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-13-3" class="td11">21 </td><td style="white-space:nowrap; text-align:left;" id="TBL-4-13-4" class="td11">48-bit <span class="ptmri7t-">CIE</span><span class="ptmri7t-"> </span><span class="cmmi-10">L</span><span class="cmsy-7">*</span><span class="cmmi-10">a</span><span class="cmsy-7">*</span><span class="cmmi-10">b</span><span class="cmsy-7">*</span> </td> </tr><tr style="vertical-align:baseline;" id="TBL-4-14-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-14-1" class="td11"><span class="pcrr7t-">IM</span><span class="pcrr7t-">_TYPE</span><span class="pcrr7t-">_sRGB </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-14-2" class="td11"><span class="pcrr7t-">sRGB </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-14-3" class="td11">22 </td><td style="white-space:nowrap; text-align:left;" id="TBL-4-14-4" class="td11">sRGB colour space </td> </tr><tr style="vertical-align:baseline;" id="TBL-4-15-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-15-1" class="td11"><span class="pcrr7t-">IM</span><span class="pcrr7t-">_TYPE</span><span class="pcrr7t-">_YXY </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-15-2" class="td11"><span class="pcrr7t-">YXY </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-15-3" class="td11">23 </td><td style="white-space:nowrap; text-align:left;" id="TBL-4-15-4" class="td11"><span class="ptmri7t-">CIE Yxy </span>colour space </td> </tr><tr style="vertical-align:baseline;" id="TBL-4-16-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-16-1" class="td11"><span class="pcrr7t-">IM</span><span class="pcrr7t-">_TYPE</span><span class="pcrr7t-">_RGB16 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-16-2" class="td11"><span class="pcrr7t-">RGB16 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-16-3" class="td11">25 </td><td style="white-space:nowrap; text-align:left;" id="TBL-4-16-4" class="td11">16-bit RGB </td> </tr><tr style="vertical-align:baseline;" id="TBL-4-17-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-17-1" class="td11"><span class="pcrr7t-">IM</span><span class="pcrr7t-">_TYPE</span><span class="pcrr7t-">_GREY16 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-17-2" class="td11"><span class="pcrr7t-">GREY16 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-17-3" class="td11">26 </td><td style="white-space:nowrap; text-align:left;" id="TBL-4-17-4" class="td11">16-bit monochrome </td> </tr><tr class="hline"><td><hr></td><td><hr></td><td><hr></td><td><hr></td></tr><tr style="vertical-align:baseline;" id="TBL-4-18-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-18-1" class="td11"> </td></tr></table></div></div> <br /><div class="caption" ><span class="id">Table 1.4: </span><span class="content">Possible values for <span class="pcrr7t-">Type</span></span></div><!--tex4ht:label?: x7-80044 --> </div><hr class="endfloat" /> <h4 class="subsectionHead"><span class="titlemark">1.2.2 </span> <a id="x7-90001.2.2"></a>Computation formats</h4> <!--l. 134--><p class="noindent" >This type of image has <span class="pcrr7t-">Coding </span>set to <span class="pcrr7t-">IM</span><span class="pcrr7t-">_CODING</span><span class="pcrr7t-">_NONE</span>. The header is then followed by a large array of pixels, laid out left-to-right, top-to-bottom. Each pixel contains the specified number of bands. Each band has the specified band format, which may be an 8-, 16- or 32-bit integer (either signed or unsigned), a single or double precision IEEE floating point number, or a pair of single or double precision floats forming a complex number. <!--l. 142--><p class="indent" > All values are stored in the host-machine’s native number representation (that is, either most-significant first, as in SPARC and 680x0 machines, or least-significant first, for Intel and DEC machines). If necessary, the VIPS library will automatically byte-swap for you during read. <!--l. 147--><p class="noindent" > <h4 class="subsectionHead"><span class="titlemark">1.2.3 </span> <a id="x7-100001.2.3"></a>Storage formats</h4> <!--l. 149--><p class="noindent" >All storage formats have other values for the <span class="pcrr7t-">Coding</span> field. This release supports <span class="pcrr7t-">IM</span><span class="pcrr7t-">_CODING</span><span class="pcrr7t-">_LABQ </span>and <span class="pcrr7t-">IM</span><span class="pcrr7t-">_CODING</span><span class="pcrr7t-">_RAD</span>. <!--l. 152--><p class="indent" > <span class="pcrr7t-">IM</span><span class="pcrr7t-">_CODING</span><span class="pcrr7t-">_LABQ </span>stores <span class="cmmi-10">L</span><sup><span class="cmsy-7">*</span></sup>, <span class="cmmi-10">a</span><sup><span class="cmsy-7">*</span></sup> and <span class="cmmi-10">b</span><sup><span class="cmsy-7">*</span></sup> for each pixel, with 10 bits for <span class="cmmi-10">L</span><sup><span class="cmsy-7">*</span></sup> and 11 bits for each of <span class="cmmi-10">a</span><sup><span class="cmsy-7">*</span></sup> and <span class="cmmi-10">b</span><sup><span class="cmsy-7">*</span></sup>. These 32 bits are packed into 4 bytes, with the most significant 8 bits of each value in the first 3 bytes, and the left-over bits packed into the final byte as 2:3:3. <!--l. 158--><p class="indent" > This format is a little awkward to process. Some VIPS functions can work directly on <span class="pcrr7t-">IM</span><span class="pcrr7t-">_CODING</span><span class="pcrr7t-">_LABQ</span> images (<span class="pcrr7t-">im</span><span class="pcrr7t-">_extract</span><span class="pcrr7t-">_area()</span>, for example), but most will require you to unpack the image to one of the computation formats (for example with <span class="pcrr7t-">im</span><span class="pcrr7t-">_LabQ2Lab()</span>) first. <!--l. 163--><p class="indent" > <span class="pcrr7t-">IM</span><span class="pcrr7t-">_CODING</span><span class="pcrr7t-">_RAD </span>stores <span class="cmmi-10">RGB </span>or <span class="cmmi-10">XY Z </span>float images as 8 bytes of mantissa and then 8 bytes of exponent, shared between the three channels. This coding style is used by the Radiance family of programs (and the HDR format) commonly used for HDR imaging. This style of image is generated when you load an HDR image. <!--l. 169--><p class="indent" > This format is a little awkward to process. Some VIPS functions can work directly on <span class="pcrr7t-">IM</span><span class="pcrr7t-">_CODING</span><span class="pcrr7t-">_RAD</span> images (<span class="pcrr7t-">im</span><span class="pcrr7t-">_extract</span><span class="pcrr7t-">_area()</span>, for example), but most will require you to unpack the image to one of the computation formats with <span class="pcrr7t-">im</span><span class="pcrr7t-">_rad2float()</span> first. <!--l. 1--><div class="crosslinks"><p class="noindent">[<a href="vipsmanualse3.html" >next</a>] [<a href="vipsmanualse1.html" >prev</a>] [<a href="vipsmanualse1.html#tailvipsmanualse1.html" >prev-tail</a>] [<a href="vipsmanualse2.html" >front</a>] [<a href="vipsmanualch1.html#vipsmanualse2.html" >up</a>] </p></div> <!--l. 1--><p class="indent" > <a id="tailvipsmanualse2.html"></a> </body></html>