<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Muhammadfauzie's Blog</title>
	<atom:link href="http://muhammadfauzie.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://muhammadfauzie.wordpress.com</link>
	<description>Just another WordPress.com weblog</description>
	<lastBuildDate>Sun, 04 Jan 2009 05:57:29 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='muhammadfauzie.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/47b85e5e6733e061ee7ec2222ec617da?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>Muhammadfauzie's Blog</title>
		<link>http://muhammadfauzie.wordpress.com</link>
	</image>
			<item>
		<title>Graphics File Format</title>
		<link>http://muhammadfauzie.wordpress.com/2009/01/04/graphics-file-format/</link>
		<comments>http://muhammadfauzie.wordpress.com/2009/01/04/graphics-file-format/#comments</comments>
		<pubDate>Sun, 04 Jan 2009 05:57:29 +0000</pubDate>
		<dc:creator>muhammadfauzie</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://muhammadfauzie.wordpress.com/?p=3</guid>
		<description><![CDATA[1. GRAPHICS INTERCHANGE FORMAT (GIF)
The Graphics Interchange Format (GIF) is a bitmap image format that was introduced by CompuServe in 1987 and has since come into widespread usage on the World Wide Web due to its wide support and portability.
The format supports up to 8 bits per pixel, allowing a single image to reference a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=muhammadfauzie.wordpress.com&blog=6043633&post=3&subd=muhammadfauzie&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><strong>1. GRAPHICS INTERCHANGE FORMAT (GIF)</strong></p>
<p>The <strong>Graphics Interchange Format</strong> (<strong>GIF</strong>) is a <a title="Raster graphics" href="http://en.wikipedia.org/wiki/Raster_graphics">bitmap</a> <a title="Image file formats" href="http://en.wikipedia.org/wiki/Image_file_formats">image format</a> that was introduced by <a title="CompuServe" href="http://en.wikipedia.org/wiki/CompuServe">CompuServe</a> in 1987 and has since come into widespread usage on the <a title="World Wide Web" href="http://en.wikipedia.org/wiki/World_Wide_Web">World Wide Web</a> due to its wide support and portability.</p>
<p>The format supports up to <a title="8-bit color" href="http://en.wikipedia.org/wiki/8-bit_color">8 bits per pixel</a>, allowing a single image to reference a palette of up to 256 distinct colors chosen from the 24-bit RGB color space. It also supports <a title="Animation" href="http://en.wikipedia.org/wiki/Animation">animations</a> and allows a separate palette of 256 colors for each frame. The color limitation makes the GIF format unsuitable for reproducing color photographs and other images with continuous color, but it is well-suited for simpler images such as graphics or logos with solid areas of color.</p>
<p>GIF images are compressed using the <a title="Lempel-Ziv-Welch" href="http://en.wikipedia.org/wiki/Lempel-Ziv-Welch">Lempel-Ziv-Welch</a> (LZW) <a title="Lossless data compression" href="http://en.wikipedia.org/wiki/Lossless_data_compression">lossless data compression</a> technique to reduce the file size without degrading the visual quality. This compression technique was patented in 1985. Controversy over the licensing agreement between the patent holder, <a title="Unisys" href="http://en.wikipedia.org/wiki/Unisys">Unisys</a>, and CompuServe in 1994 inspired the development of the <a title="Portable Network Graphics" href="http://en.wikipedia.org/wiki/Portable_Network_Graphics">Portable Network Graphics</a> (PNG) standard; since then all the relevant patents have expired.</p>
<p><a title="CompuServe" href="http://en.wikipedia.org/wiki/CompuServe">CompuServe</a> introduced the GIF format in 1987 to provide a color image format for their file downloading areas, replacing their earlier <a title="Run-length encoding" href="http://en.wikipedia.org/wiki/Run-length_encoding">run-length encoding</a> (RLE) format, which was black and white only. GIF became popular because it used LZW <a title="Data compression" href="http://en.wikipedia.org/wiki/Data_compression">data compression</a>, which was more efficient than the run-length encoding that formats such as <a title="PCX" href="http://en.wikipedia.org/wiki/PCX">PCX</a> and <a title="MacPaint" href="http://en.wikipedia.org/wiki/MacPaint">MacPaint</a> used, and fairly large images could therefore be downloaded in a reasonably short time, even with very slow <a title="Modem" href="http://en.wikipedia.org/wiki/Modem">modems</a>.</p>
<p>The original version of the GIF format was called <strong>87a</strong>. In 1989, CompuServe devised an enhanced version, called <strong>89a</strong>,<sup class="reference"><a href="http://en.wikipedia.org/wiki/GIF#cite_note-0"></a></sup> that added support for multiple images in a stream, interlacing and storage of application-specific metadata. The two versions can be distinguished by looking at the first six <a title="Byte" href="http://en.wikipedia.org/wiki/Byte">bytes</a> of the file, which, when interpreted as <a title="ASCII" href="http://en.wikipedia.org/wiki/ASCII">ASCII</a>, read &#8220;GIF87a&#8221; and &#8220;GIF89a&#8221;, respectively.</p>
<p>GIF was one of the first two image formats commonly used on Web sites, the other being the black and white <a class="mw-redirect" title="XBM" href="http://en.wikipedia.org/wiki/XBM">XBM</a>.<sup class="noprint Template-Fact"><span style="white-space:nowrap;" title="This claim needs references to reliable sources since February 2007">[<em><a title="Citation needed" href="http://en.wikipedia.org/wiki/Wikipedia:Citation_needed">citation needed</a></em>]</span></sup> <a title="JPEG" href="http://en.wikipedia.org/wiki/JPEG">JPEG</a> came later with the <a class="mw-redirect" title="Mosaic browser" href="http://en.wikipedia.org/wiki/Mosaic_browser">Mosaic browser</a>.</p>
<p>The GIF89a feature of storing multiple images in one file, accompanied by control data, is used extensively on the Web to produce simple <a title="Computer animation" href="http://en.wikipedia.org/wiki/Computer_animation">animations</a>. The optional interlacing feature, which stores image scan lines out of order in such a fashion that even a partially downloaded image was somewhat recognizable, also helped GIF&#8217;s popularity,<sup class="noprint Template-Fact"><span style="white-space:nowrap;" title="This claim needs references to reliable sources since February 2007">[<em><a title="Citation needed" href="http://en.wikipedia.org/wiki/Wikipedia:Citation_needed">citation needed</a></em>]</span></sup> as a user could abort the download if it was not what was required.</p>
<p>The creators of the format pronounced GIF with a soft &#8220;<a title="G" href="http://en.wikipedia.org/wiki/G">g</a>&#8220;, <span class="IPA" title="Representation in the International Phonetic Alphabet (IPA)">/ˈdʒɪf/</span>, as in &#8220;George&#8221;. However, many people pronounce GIF with a hard &#8220;G&#8221;, as in a &#8216;gift&#8217; IPA: <span class="IPA" title="Pronunciation in IPA"><a class="mw-redirect" title="IPA for English" href="http://en.wikipedia.org/wiki/Help:IPA_for_English">/ˈɡɪf/</a></span><sup class="noprint Template-Fact"><span style="white-space:nowrap;" title="This claim needs references to reliable sources since November 2008">[<em><a title="Citation needed" href="http://en.wikipedia.org/wiki/Wikipedia:Citation_needed">citation needed</a></em>]</span></sup>, reflecting the way it is pronounced in its own acronym (Graphics Interchange Format). According to the creator of the GIF format, <a title="Steve Wilhite" href="http://en.wikipedia.org/wiki/Steve_Wilhite">Steve Wilhite</a>, the pronunciation deliberately echoes that of an American peanut butter brand, <a title="Jif (peanut butter)" href="http://en.wikipedia.org/wiki/Jif_%28peanut_butter%29">Jif</a>, and the employees of CompuServe would often say <em>&#8220;Choosy developers choose GIF&#8221;</em>, spoofing this brand&#8217;s television commercials.<sup class="noprint Template-Fact"><span style="white-space:nowrap;" title="This claim needs references to reliable sources since April 2007">[<em><a title="Citation needed" href="http://en.wikipedia.org/wiki/Wikipedia:Citation_needed">citation needed</a></em>]</span></sup> This pronunciation was also identified by <a title="CompuServe" href="http://en.wikipedia.org/wiki/CompuServe">CompuServe</a> in their documentation of a graphics display program called CompuShow<sup class="reference"><a href="http://en.wikipedia.org/wiki/GIF#cite_note-1"></a></sup>. Both pronunciations are given as correct by the <a title="Oxford English Dictionary" href="http://en.wikipedia.org/wiki/Oxford_English_Dictionary">Oxford English Dictionary</a><sup class="reference"><a href="http://en.wikipedia.org/wiki/GIF#cite_note-2"></a></sup> and the <a class="mw-redirect" title="American Heritage Dictionary" href="http://en.wikipedia.org/wiki/American_Heritage_Dictionary">American Heritage Dictionary</a>.<sup class="reference"><a href="http://en.wikipedia.org/wiki/GIF#cite_note-3"></a></sup></p>
<ul>
<li>GIFs are suitable for sharp-edged line art (such as logos) with a limited number of colors. This takes advantage of the format&#8217;s lossless compression, which favors flat areas of uniform color with well defined edges (in contrast to <a title="JPEG" href="http://en.wikipedia.org/wiki/JPEG">JPEG</a>, which favors smooth gradients and softer images).</li>
<li>GIFs can also be used to store low-color sprite data for games.</li>
<li>GIFs can be used for small animations and low-resolution film clips.</li>
<li>In view of the general limitation on the GIF image palette to 256 colors, it is not usually used as a format for <a title="Digital photography" href="http://en.wikipedia.org/wiki/Digital_photography">digital photography</a>. Digital photographers use image file formats capable of reproducing a greater range of colors, such as <a title="Tagged Image File Format" href="http://en.wikipedia.org/wiki/Tagged_Image_File_Format">TIFF</a>, <a title="Raw image format" href="http://en.wikipedia.org/wiki/Raw_image_format">RAW</a> or the lossy <a title="JPEG" href="http://en.wikipedia.org/wiki/JPEG">JPEG</a>, which is more suitable for compressing photographs.</li>
<li>The <a title="Portable Network Graphics" href="http://en.wikipedia.org/wiki/Portable_Network_Graphics">PNG</a> format is a popular alternative to GIF images since it uses better compression techniques and does not have a limit of 256 colors, but PNGs do not support animations. The <a title="Multiple-image Network Graphics" href="http://en.wikipedia.org/wiki/Multiple-image_Network_Graphics">MNG</a> and <a class="mw-redirect" title="Animated Portable Network Graphics" href="http://en.wikipedia.org/wiki/Animated_Portable_Network_Graphics">APNG</a> formats, both derived from PNG, support animations, but aren&#8217;t widely used.</li>
</ul>

<a href='http://muhammadfauzie.wordpress.com/2009/01/04/graphics-file-format/bananashoeshine/' title='bananashoeshine'><img width="96" height="96" src="http://muhammadfauzie.files.wordpress.com/2009/01/bananashoeshine.gif?w=96&#038;h=96" class="attachment-thumbnail" alt="" title="bananashoeshine" /></a>
<a href='http://muhammadfauzie.wordpress.com/2009/01/04/graphics-file-format/newtons_cradle_animation_book_2/' title='newtons_cradle_animation_book_2'><img width="128" height="96" src="http://muhammadfauzie.files.wordpress.com/2009/01/newtons_cradle_animation_book_2.gif?w=128&#038;h=96" class="attachment-thumbnail" alt="" title="newtons_cradle_animation_book_2" /></a>

<p>GIF is palette based: although any <a title="Palette (computing)" href="http://en.wikipedia.org/wiki/Palette_%28computing%29">palette selection</a> can be one of millions of shades, the maximum number that can be used in a frame is 256. These are stored in a &#8220;palette&#8221;, a table that associates each palette selection number with a specific <a class="mw-redirect" title="RGB" href="http://en.wikipedia.org/wiki/RGB">RGB</a> value. The limitation to 256 colors seemed reasonable at the time of GIF&#8217;s creation because few people could afford the hardware to display more. Simple graphics, line drawings, cartoons, and grey-scale photographs typically need fewer than 256 colors. In addition, one of the colors in the palette can optionally be set as fully transparent. A transparent pixel takes on the color of the pixel in the same positions from the background, which may have been determined by a previous frame of animation.</p>
<p>There exist ways to <a class="mw-redirect" title="Dithering" href="http://en.wikipedia.org/wiki/Dithering">dither</a> or diffuse photographs by using pixels of 2 or more different colors to approximate an in-between color, but this transformation inevitably loses some detail. The <a title="Algorithm" href="http://en.wikipedia.org/wiki/Algorithm">algorithms</a> used to select the palette and to perform the dithering vary widely in output quality. Additionally, dithering significantly reduces the image&#8217;s compressibility and thus works contrary to GIF&#8217;s main purpose.</p>
<p>In the early days of graphical web browsers, graphics cards with 8-bit buffers (allowing only 256 colors) were common and it was fairly common to make GIF images using the <a title="Web colors" href="http://en.wikipedia.org/wiki/Web_colors#Web-safe_colors">websafe palette</a> which was based on the common subset of the standard Windows and Macintosh palettes.<sup class="noprint Template-Fact"><span style="white-space:nowrap;" title="This claim needs references to reliable sources since February 2007">[<em><a title="Citation needed" href="http://en.wikipedia.org/wiki/Wikipedia:Citation_needed">citation needed</a></em>]</span></sup> This ensured predictable display but severely limited the choice of colors. Now that 24-bit graphics cards are the norm, optimized palettes make less sense when creating images, though some web designers still advise the use of the web safe palette.</p>
<p>There are at least two rarely-used methods<sup class="reference"><a href="http://en.wikipedia.org/wiki/GIF#cite_note-4"></a></sup><sup class="reference"><a href="http://en.wikipedia.org/wiki/GIF#cite_note-5"></a></sup> that can generate a GIF that, if decoded according to the GIF89a standard, will produce an animation that ends with a 24-bit RGB <a title="Truecolor" href="http://en.wikipedia.org/wiki/Truecolor">truecolor</a> image.</p>
<p>GIF89a was designed based on the principle of rendering images (known as frames when used for animation) to a logical, fixed-size screen. Each image could optionally have no delay after it is rendered, and could have its own 256-color palette. Also, each image need not fill the entire logical screen, and the animation can cease after the last frame; it need not begin again. The multi-frame, zero-delay, and unique-palette features, optionally combined with transparency, allow for each image to replace only a <em>portion</em> of the previous image&#8217;s pixel data. When used without looping, a more-than-256-color final result can be achieved.</p>
<p>For example, a GIF can be encoded to render as a series of overlapping full-screen images, each image filling in color that wasn&#8217;t in the previous one. Transparent pixels can be used to preserve colors from previous images<sup class="reference">.<a href="http://en.wikipedia.org/wiki/GIF#cite_note-6"></a></sup></p>
<p>A similar method that doesn&#8217;t use transparency is to encode the GIF to render as a series of less-than-full-screen images adjacent to each other, rather than overlapping.<sup class="reference"><a href="http://en.wikipedia.org/wiki/GIF#cite_note-7"></a></sup></p>
<p>These methods are not widely supported by GIF-generating software, and Web browsers and other image viewers may not contain completely compliant GIF89a implementations, so their ability to display such GIFs accurately may be limited.</p>
<p><strong>2. JPEG</strong></p>
<p>In <a title="Computing" href="http://en.wikipedia.org/wiki/Computing">computing</a>, <strong>JPEG</strong> (pronounced JAY-peg; IPA: <span class="IPA" title="Pronunciation in IPA"><a class="mw-redirect" title="IPA for English" href="http://en.wikipedia.org/wiki/Help:IPA_for_English">/ˈdʒeɪpɛg/</a></span>) is a commonly used method of <a title="Image compression" href="http://en.wikipedia.org/wiki/Image_compression">compression</a> for photographic images. The degree of compression can be adjusted, allowing a selectable tradeoff between storage size and image quality. JPEG typically achieves 10:1 compression with little perceptible loss in image quality.</p>
<p>JPEG compression is used in a number of <a title="Image file formats" href="http://en.wikipedia.org/wiki/Image_file_formats">image file formats</a>. JPEG/<a class="mw-redirect" title="Exif" href="http://en.wikipedia.org/wiki/Exif">Exif</a> is the most common image format used by digital cameras and other photographic image capture devices; along with JPEG/<a class="mw-redirect" title="JFIF" href="http://en.wikipedia.org/wiki/JFIF">JFIF</a>, it is the most common format for storing and transmitting photographic images on the <a title="World Wide Web" href="http://en.wikipedia.org/wiki/World_Wide_Web">World Wide Web</a>. These format variations are often not distinguished, and are simply called JPEG.</p>
<p>The <a title="Internet media type" href="http://en.wikipedia.org/wiki/Internet_media_type">MIME media type</a> for JPEG is <em>image/jpeg</em> (defined in <a class="external" title="http://tools.ietf.org/html/rfc1341" href="http://tools.ietf.org/html/rfc1341">RFC 1341</a>).</p>
<p>The name &#8220;JPEG&#8221; stands for <a title="Joint Photographic Experts Group" href="http://en.wikipedia.org/wiki/Joint_Photographic_Experts_Group">Joint Photographic Experts Group</a>, the name of the committee that created the standard. The group was organized in 1986, issuing a standard in 1992, which was approved in 1994 as <strong>ISO 10918-1</strong>. JPEG is distinct from MPEG (<a title="Moving Picture Experts Group" href="http://en.wikipedia.org/wiki/Moving_Picture_Experts_Group">Moving Picture Experts Group</a>), which produces compression schemes for video.</p>
<p>The JPEG standard specifies both the <a title="Codec" href="http://en.wikipedia.org/wiki/Codec">codec</a>, which defines how an image is compressed into a stream of <a title="Byte" href="http://en.wikipedia.org/wiki/Byte">bytes</a> and decompressed back into an image, and the file format used to contain that stream.</p>
<p>The JPEG compression algorithm is at its best on photographs and paintings of realistic scenes with smooth variations of tone and color. For web usage, where the bandwidth used by an image is important, JPEG is very popular. And JPEG/<a class="mw-redirect" title="Exif" href="http://en.wikipedia.org/wiki/Exif">Exif</a> is the most common format saved by digital cameras.</p>
<p>On the other hand, JPEG is <em>not</em> as well suited for line drawings and other textual or iconic graphics, where the sharp contrasts between adjacent pixels cause noticeable artifacts. Such images are better saved in a <a title="Lossless data compression" href="http://en.wikipedia.org/wiki/Lossless_data_compression#Graphics">lossless graphics format</a> such as <a class="mw-redirect" title="TIFF" href="http://en.wikipedia.org/wiki/TIFF">TIFF</a>, <a title="Graphics Interchange Format" href="http://en.wikipedia.org/wiki/Graphics_Interchange_Format">GIF</a>, <a title="Portable Network Graphics" href="http://en.wikipedia.org/wiki/Portable_Network_Graphics">PNG</a>, or a <a title="Raw image format" href="http://en.wikipedia.org/wiki/Raw_image_format">raw image format</a>. JPEG is also not well suited to files that will undergo multiple edits, as some image quality will usually be lost each time the image is decompressed and recompressed (<a title="Generation loss" href="http://en.wikipedia.org/wiki/Generation_loss">generation loss</a>). To avoid this, an image that is being modified or may be modified in the future can be saved in a lossless format such as <a title="Portable Network Graphics" href="http://en.wikipedia.org/wiki/Portable_Network_Graphics">PNG</a>, and a copy exported as JPEG for distribution.</p>
<p>As JPEG is a lossy compression method — it removes information from the image — it must not be used in astronomical or medical imaging or other purposes where the exact reproduction of the data is required. Lossless formats such as <a title="Portable Network Graphics" href="http://en.wikipedia.org/wiki/Portable_Network_Graphics">PNG</a> must be used instead.</p>
<p>The compression method is usually <a title="Lossy compression" href="http://en.wikipedia.org/wiki/Lossy_compression">lossy</a>, meaning that some visual quality is lost in the process and cannot be restored. There are <a class="mw-redirect" title="JPEG-LS" href="http://en.wikipedia.org/wiki/JPEG-LS">variations</a> on the standard baseline JPEG that are lossless; however, these are not widely supported.</p>
<p>There is also an <a class="mw-redirect" title="Interlace (bitmaps)" href="http://en.wikipedia.org/wiki/Interlace_%28bitmaps%29">interlaced</a> &#8220;Progressive JPEG&#8221; format, in which data is compressed in multiple passes of progressively higher detail. This is ideal for large images that will be displayed while downloading over a slow connection, allowing a reasonable preview after receiving only a portion of the data. However, progressive JPEGs are not as widely supported, and even some software which does support them (such as some versions of Internet Explorer) only displays the image once it has been completely downloaded.</p>
<p>There are also many medical imaging systems that create and process 12-bit JPEG images. The 12-bit JPEG format has been part of the JPEG specification for some time, but again, this format is not as widely supported.</p>
<p>A number of alterations to a JPEG image can be performed losslessly (that is, without recompression and the associated quality loss) as long as the image size is a multiple 1 MCU block (Minimum Coded Unit) (usually 16 pixels in both directions, for 4:2:0).</p>
<p>Blocks can be rotated in 90 degree increments, flipped in the horizontal, vertical and diagonal axes and moved about in the image. Not all blocks from the original image need to be used in the modified one.</p>
<p>The top and left of a JPEG image must lie on a block boundary, but the bottom and right need not do so. This limits the possible lossless crop operations, and also what flips and rotates can be performed on an image whose edges do not lie on a block boundary for all channels.</p>
<p>When using lossless cropping, if the bottom or right side of the crop region is not on a block boundary then the rest of the data from the partially used blocks will still be present in the cropped file and can be recovered relatively easily by anyone with a hex editor and an understanding of the format.</p>
<p>It is also possible to transform between baseline and progressive formats without any loss of quality, since the only difference is the order in which the coefficients are placed in the file.</p>
<p>The <a title="File format" href="http://en.wikipedia.org/wiki/File_format">file format</a> is known as &#8216;JPEG Interchange Format&#8217; (JIF), as specified in Annex B of the standard. However, this &#8220;pure&#8221; file format is rarely used, primarily because of the difficulty of programming encoders and decoders that fully implement all aspects of the standard and because of certain shortcomings of the standard:</p>
<ul>
<li>Color space definition</li>
<li>Component sub-sampling registration</li>
<li>Pixel aspect ratio definition</li>
</ul>
<p>Several additional standards have evolved to address these issues. The first of these, released in 1992, was <a title="JPEG File Interchange Format" href="http://en.wikipedia.org/wiki/JPEG_File_Interchange_Format">JPEG File Interchange Format</a> (or JFIF), followed in recent years by <a title="Exchangeable image file format" href="http://en.wikipedia.org/wiki/Exchangeable_image_file_format">Exchangeable image file format</a> (Exif) and <a title="International Color Consortium" href="http://en.wikipedia.org/wiki/International_Color_Consortium">ICC</a> <a class="mw-redirect" title="ICC Profile" href="http://en.wikipedia.org/wiki/ICC_Profile">color profiles</a>.</p>
<p>There is some confusion between the original &#8216;JPEG Interchange Format&#8217; (JIF) and the similarly titled &#8216;JPEG File Interchange Format&#8217; (JFIF). In some ways JFIF is a cutdown version of the JIF standard in that it specifies certain constraints (such as standard color space), while in other ways it is an extension of JIF due to the standard <em>Application Segment</em> header. The documentation for the original JFIF standard states:<sup class="reference"><a href="http://en.wikipedia.org/wiki/JPEG#cite_note-0"></a></sup></p>
<dl>
<dd><em>JPEG File Interchange Format is a minimal file format which enables JPEG bitstreams to be exchanged between a wide variety of platforms and applications. This minimal format does not include any of the advanced features found in the TIFF JPEG specification or any application specific file format. Nor should it, for the only purpose of this simplified format is to allow the exchange of JPEG compressed images.</em></dd>
</dl>
<p>Image files that employ JPEG compression are commonly called &#8220;JPEG files&#8221;. Most image capture devices (such as digital cameras) and most image editing software programs that write to a &#8220;JPEG file&#8221; are actually creating a file in the <a class="mw-redirect" title="JFIF" href="http://en.wikipedia.org/wiki/JFIF">JFIF</a> and/or <a class="mw-redirect" title="Exif" href="http://en.wikipedia.org/wiki/Exif">Exif</a> format.<sup class="reference"><a href="http://en.wikipedia.org/wiki/JPEG#cite_note-1"></a></sup></p>
<p>Strictly speaking, the JFIF and Exif standards are incompatible because they each specify that their header appears first. In practice, most JPEG files in Exif format contain a small JFIF header that precedes the Exif header. This allows older readers to correctly handle the older format JFIF header, while newer readers also decode the following Exif header.</p>
<p>The most common <a title="Filename extension" href="http://en.wikipedia.org/wiki/Filename_extension">filename extensions</a> for files employing JPEG compression are <strong>.jpg</strong> and <strong>.jpeg</strong>, though .jpe, .jfif and .jif are also used. It is also possible for JPEG data to be embedded in other file types &#8211; <a title="Tagged Image File Format" href="http://en.wikipedia.org/wiki/Tagged_Image_File_Format">TIFF</a> encoded files often embed a JPEG image as a <a title="Thumbnail" href="http://en.wikipedia.org/wiki/Thumbnail">thumbnail</a> of the main image.</p>
<p>Many JPEG files embed an ICC color profile (<a title="Color space" href="http://en.wikipedia.org/wiki/Color_space">color space</a>). Commonly used color profiles include <a class="mw-redirect" title="SRGB color space" href="http://en.wikipedia.org/wiki/SRGB_color_space">sRGB</a> and <a title="Adobe RGB color space" href="http://en.wikipedia.org/wiki/Adobe_RGB_color_space">Adobe RGB</a>. Because these color spaces use a non-linear transformation, the <a title="Dynamic range" href="http://en.wikipedia.org/wiki/Dynamic_range">dynamic range</a> of an 8-bit JPEG file is about 11 <a title="F-number" href="http://en.wikipedia.org/wiki/F-number">stops</a>. However, many applications are not able to deal with JPEG color profiles and simply ignore them.</p>
<p>A JPEG image contains a sequence of <em>markers</em>, each of which begins with a 0xFF byte followed by a byte indicating what kind of marker it is. Some markers consist of just those two bytes; others are followed by two bytes indicating the length of marker-specific payload data that follows. (The length includes the two bytes for the length, but not the two bytes for the marker.) Some markers are followed by entropy-coded data; the length of such a marker does not include the entropy-coded data.</p>
<p>Within the entropy-coded data, after any 0xFF byte, a 0&#215;00 byte is inserted by the encoder before the next byte, so that there does not appear to be a marker where none is intended. Decoders must skip this 0&#215;00 byte. This technique, called <em>byte stuffing</em>, is only applied to the entropy-coded data, not to marker payload data.</p>
<p>There are other <em>Start Of Frame</em> markers that introduce other kinds of JPEG.</p>
<p>Since several vendors might use the same APP<em>n</em> marker type, application-specific markers often begin with a standard or vendor name (e.g., &#8220;Exif&#8221; or &#8220;Adobe&#8221;) or some other identifying string.</p>
<p>At a restart marker, block-to-block predictor variables are reset, and the bitstream is synchronized to a byte boundary. Restart markers provide means for recovery after bitstream error. Since the runs of macroblocks between restart markers may be independently decoded, these runs may be decoded in parallel.</p>
<p>Although a JPEG file can be encoded in various ways, most commonly it is done with JFIF encoding. The encoding process consists of several steps:</p>
<ol>
<li>The representation of the colors in the image is converted from <a title="RGB color model" href="http://en.wikipedia.org/wiki/RGB_color_model">RGB</a> to <a title="YCbCr" href="http://en.wikipedia.org/wiki/YCbCr">YCbCr</a>, consisting of one <a title="Luma (video)" href="http://en.wikipedia.org/wiki/Luma_%28video%29">luma</a> component (Y), representing brightness, and two <a title="Chrominance" href="http://en.wikipedia.org/wiki/Chrominance">chroma</a> components, (Cb and Cr), representing color. This step is sometimes skipped.</li>
<li>The resolution of the chroma data is reduced, usually by a factor of 2. This reflects the fact that the eye is less sensitive to fine color details than to fine brightness details.</li>
<li>The image is split into blocks of 8×8 pixels, and for each block, each of the Y, Cb, and Cr data undergoes a <a title="Discrete cosine transform" href="http://en.wikipedia.org/wiki/Discrete_cosine_transform">discrete cosine transform</a> (DCT). A DCT is similar to a <a title="Fourier transform" href="http://en.wikipedia.org/wiki/Fourier_transform">Fourier transform</a> in the sense that it produces a kind of spatial frequency spectrum.</li>
<li>The amplitudes of the frequency components are <a title="Quantization" href="http://en.wikipedia.org/wiki/Quantization">quantized</a>. Human vision is much more sensitive to small variations in color or brightness over large areas than to the strength of high-frequency brightness variations. Therefore, the magnitudes of the high-frequency components are stored with a lower accuracy than the low-frequency components. The quality setting of the encoder (for example 50 or 95 on a scale of 0–100 in the Independent JPEG Group&#8217;s library<sup class="reference"><a href="http://en.wikipedia.org/wiki/JPEG#cite_note-3"></a></sup>) affects to what extent the resolution of each frequency component is reduced. If an excessively low quality setting is used, the high-frequency components are discarded altogether.</li>
<li>The resulting data for all 8×8 blocks is further compressed with a loss-less algorithm, a variant of <a class="mw-redirect" title="Huffman encoding" href="http://en.wikipedia.org/wiki/Huffman_encoding">Huffman encoding</a>.</li>
</ol>
<p>The decoding process reverses these steps. In the remainder of this section, the encoding and decoding processes are described in more detail.</p>
<p>Many of the options in the JPEG standard are not commonly used, and as mentioned above, most image software uses the simpler JFIF format when creating a JPEG file, which among other things specifies the encoding method. Here is a brief description of one of the more common methods of encoding when applied to an input that has 24 <a class="mw-redirect" title="Bits per pixel" href="http://en.wikipedia.org/wiki/Bits_per_pixel">bits per pixel</a> (eight each of <a title="RGB color model" href="http://en.wikipedia.org/wiki/RGB_color_model">red, green, and blue</a>). This particular option is a <a class="mw-redirect" title="Lossy data compression" href="http://en.wikipedia.org/wiki/Lossy_data_compression">lossy data compression</a> method.</p>
<p>First, the image should be converted from <a title="RGB color model" href="http://en.wikipedia.org/wiki/RGB_color_model">RGB</a> into a different <a title="Color space" href="http://en.wikipedia.org/wiki/Color_space">color space</a> called <a title="YCbCr" href="http://en.wikipedia.org/wiki/YCbCr">YCbCr</a>. It has three components Y, Cb and Cr: the Y component represents the brightness of a pixel, the Cb and Cr components represent the <a title="Chrominance" href="http://en.wikipedia.org/wiki/Chrominance">chrominance</a> (split into blue and red components). This is the same color space as used by <a title="Digital television" href="http://en.wikipedia.org/wiki/Digital_television">digital color television</a> as well as digital video including <a class="mw-redirect" title="DVD Video" href="http://en.wikipedia.org/wiki/DVD_Video">video DVDs</a>, and is similar to the way color is represented in analog <a title="PAL" href="http://en.wikipedia.org/wiki/PAL">PAL</a> video and <a title="Multiplexed Analogue Components" href="http://en.wikipedia.org/wiki/Multiplexed_Analogue_Components">MAC</a> but not by analog <a title="NTSC" href="http://en.wikipedia.org/wiki/NTSC">NTSC</a>, which uses the <a title="YIQ" href="http://en.wikipedia.org/wiki/YIQ">YIQ</a> color space. The YCbCr color space conversion allows greater compression without a significant effect on perceptual image quality (or greater perceptual image quality for the same compression). The compression is more efficient as the brightness information, which is more important to the eventual perceptual quality of the image, is confined to a single channel, more closely representing the human visual system.</p>
<p>This conversion to YCbCr is specified in the JFIF standard, and should be performed for the resulting JPEG file to have maximum compatibility. However, some JPEG implementations in &#8220;highest quality&#8221; mode do not apply this step and instead keep the color information in the <a title="RGB color model" href="http://en.wikipedia.org/wiki/RGB_color_model">RGB color model</a><sup class="noprint Template-Fact"><span style="white-space:nowrap;" title="This claim needs references to reliable sources since February 2008">[<em><a title="Citation needed" href="http://en.wikipedia.org/wiki/Wikipedia:Citation_needed">citation needed</a></em>]</span></sup>, where the image is stored in separate channels for red, green and blue luminance. This results in less efficient compression, and would not likely be used if file size was an issue.</p>
<p>Due to the densities of color- and brightness-sensitive receptors in the human eye, humans can see considerably more fine detail in the brightness of an image (the Y component) than in the color of an image (the Cb and Cr components). Using this knowledge, encoders can be designed to compress images more efficiently.</p>
<p>The transformation into the <a title="YCbCr" href="http://en.wikipedia.org/wiki/YCbCr">YCbCr color model</a> enables the next step, which is to reduce the spatial resolution of the Cb and Cr components (called &#8220;<a title="Downsampling" href="http://en.wikipedia.org/wiki/Downsampling">downsampling</a>&#8221; or &#8220;<a title="Chroma subsampling" href="http://en.wikipedia.org/wiki/Chroma_subsampling">chroma subsampling</a>&#8220;). The ratios at which the downsampling can be done on JPEG are <a class="mw-redirect" title="4" href="http://en.wikipedia.org/wiki/YUV_4:4:4">4:4:4</a> (no downsampling), <a class="mw-redirect" title="2" href="http://en.wikipedia.org/wiki/YUV_4:2:2">4:2:2</a> (reduce by factor of 2 in horizontal direction), and most commonly <a class="mw-redirect" title="0" href="http://en.wikipedia.org/wiki/YUV_4:2:0">4:2:0</a> (reduce by factor of 2 in horizontal and vertical directions). For the rest of the compression process, Y, Cb and Cr are processed separately and in a very similar manner.</p>
<p>After <a class="mw-redirect" title="Chroma Subsampling" href="http://en.wikipedia.org/wiki/Chroma_Subsampling">subsampling</a>, each <a title="Channel (digital image)" href="http://en.wikipedia.org/wiki/Channel_%28digital_image%29">channel</a> must be split into 8×8 blocks of pixels. If the data for a channel does not represent an integer number of blocks then the encoder must fill the remaining area of the incomplete blocks with some form of dummy data. Filling the edge pixels with a fixed color (typically black) creates ringing artifacts along the visible part of the border; repeating the edge pixels is a common technique that reduces the visible border, but it can still create artifacts.</p>
<p>The resulting compression ratio can be varied according to need by being more or less aggressive in the divisors used in the quantization phase. Ten to one compression usually results in an image that cannot be distinguished by eye from the original. 100 to one compression is usually possible, but will look distinctly <a title="Compression artifact" href="http://en.wikipedia.org/wiki/Compression_artifact">artifacted</a> compared to the original. The appropriate level of compression depends on the use to which the image will be put.</p>
<p>Those who use the <a title="World Wide Web" href="http://en.wikipedia.org/wiki/World_Wide_Web">World Wide Web</a> may be familiar with the irregularities known as <a title="Compression artifact" href="http://en.wikipedia.org/wiki/Compression_artifact">compression artifacts</a> (commonly known as &#8216;jaggies&#8217;) that appear in JPEG images. These are due to the quantization step of the JPEG algorithm. They are especially noticeable around sharp corners between contrasting colours (text is a good example as it contains many such corners). They can be reduced by choosing a lower level of <a title="Image compression" href="http://en.wikipedia.org/wiki/Image_compression">compression</a>; they may be eliminated by saving an image using a <a title="Lossless data compression" href="http://en.wikipedia.org/wiki/Lossless_data_compression">lossless</a> file format, though for photographic images this will usually result in a larger file size. Compression artifacts make low-quality JPEGs unacceptable for storing <a title="Heightmap" href="http://en.wikipedia.org/wiki/Heightmap">heightmaps</a>. The images created with ray-tracing programs have noticeable blocky shapes on the terrain.</p>
<p>Some programs allow the user to vary the amount by which individual blocks are compressed. Stronger compression is applied to areas of the image that show fewer artifacts. This way it is possible to manually reduce JPEG file size with less loss of quality.</p>
<p>Since the quantization stage <em>always</em> results in a loss of information, JPEG standard is always a lossy compression codec. (Information is lost both in quantizing and rounding of the floating-point numbers.) Even if the quantization matrix is a <a title="Matrix of ones" href="http://en.wikipedia.org/wiki/Matrix_of_ones">matrix of ones</a>, information will still be lost in the rounding step.</p>
<p>JPEG compression artifacts blend well into photographs with detailed non-uniform textures, allowing higher compression ratios. Notice how a higher compression ratio first affects the high-frequency textures in the upper-left corner of the image, and how the contrasting lines become more fuzzy. The very high compression ratio severely affects the quality of the image, although the overall colors and image form are still recognizable. However, the precision of colors suffer less (for a human eye) than the precision of contours (based on luminance). This justifies the fact that images should be first transformed in a color model separating the luminance from the chromatic information, before subsampling the chromatic planes (which may also use lower quality quantization) in order to preserve the precision of the luminance plane with more information bits.</p>
<p>For information, the uncompressed 24-bit RGB bitmap image below (73,242 pixels) would require 219,726 bytes (excluding all other information headers). The filesizes indicated below include the internal JPEG information headers and some meta-data. For full quality images (Q=100), about 8.25 bits per color pixel is required. On grayscale images, a minimum of 6.5 bits per pixel is enough (a comparable Q=100 quality color information requires about 25% more encoded bits). The full quality image below (Q=100) is encoded at 9 bits per color pixel, the medium quality image (Q=25) uses 1 bit per color pixel. For most applications, the quality factor should not go below 0.75 bit per pixel (Q=12.5), as demonstrated by the low quality image. The image at lowest quality uses only 0.13 bit per pixel, and displays very poor color, it could only be usable after subsampling to a much lower display size.</p>
<p>The medium quality photo uses only 4.3% of the storage space but has little noticeable loss of detail or visible artifacts. However, once a certain threshold of compression is passed, compressed images show increasingly visible defects. See the article on <a class="mw-redirect" title="Rate distortion theory" href="http://en.wikipedia.org/wiki/Rate_distortion_theory">rate distortion theory</a> for a mathematical explanation of this threshold effect.</p>
<p>From 2004 to 2008, new research has emerged on ways to further compress the data contained in JPEG images without modifying the represented image.<sup class="reference"><a href="http://en.wikipedia.org/wiki/JPEG#cite_note-Bauermann-5"></a></sup><sup class="reference"><a href="http://en.wikipedia.org/wiki/JPEG#cite_note-Ponomarenko-6"></a></sup><sup class="reference"><a href="http://en.wikipedia.org/wiki/JPEG#cite_note-stirner-7"></a></sup><sup class="reference"><a href="http://en.wikipedia.org/wiki/JPEG#cite_note-matsuda-8"></a></sup> This has applications in scenarios where the original image is only available in JPEG format, and its size needs to be reduced for archival or transmission. Standard general-purpose compression tools cannot significantly compress JPEG files.</p>
<p>Typically, such schemes take advantage of improvements to the naive scheme for coding DCT coefficients, which fails to take into account:</p>
<ul>
<li>Correlations between magnitudes of adjacent coefficients in the same block;</li>
<li>Correlations between magnitudes of the same coefficient in adjacent blocks;</li>
<li>Correlations between magnitudes of the same coefficient/block in different channels;</li>
<li>The DC coefficients when taken together resemble a downscale version of the original image multiplied by a scaling factor. Well-known schemes for <a class="mw-redirect" title="Lossless compression" href="http://en.wikipedia.org/wiki/Lossless_compression#Graphics">lossless coding of continuous-tone images</a> can be applied, achieving somewhat better compression than the <a class="mw-redirect" title="Huffman code" href="http://en.wikipedia.org/wiki/Huffman_code">Huffman coded</a> <a title="DPCM" href="http://en.wikipedia.org/wiki/DPCM">DPCM</a> used in JPEG.</li>
</ul>
<p>Some standard but rarely-used options already exist in JPEG to improve the efficiency of coding DCT coefficients: the <a title="Arithmetic coding" href="http://en.wikipedia.org/wiki/Arithmetic_coding">arithmetic coding</a> option, and the progressive coding option (which produces lower bitrates because values for each coefficient are coded independently, and each coefficient has a significantly different distribution). Modern methods have improved on these techniques by reordering coefficients to group coefficients of larger magnitude together;<sup class="reference"><a href="http://en.wikipedia.org/wiki/JPEG#cite_note-Bauermann-5"></a></sup> using adjacent coefficients and blocks to predict new coefficient values;<sup class="reference"><a href="http://en.wikipedia.org/wiki/JPEG#cite_note-stirner-7"></a></sup> dividing blocks or coefficients up among a small number of independently coded models based on their statistics and adjacent values;<sup class="reference"><a href="http://en.wikipedia.org/wiki/JPEG#cite_note-Ponomarenko-6"></a></sup><sup class="reference"><a href="http://en.wikipedia.org/wiki/JPEG#cite_note-stirner-7"></a></sup> and most recently, by decoding blocks, predicting subsequent blocks in the spatial domain, and then encoding these to generate predictions for DCT coefficients.<sup class="reference"><a href="http://en.wikipedia.org/wiki/JPEG#cite_note-matsuda-8"></a></sup></p>
<p>Typically, such methods can compress existing JPEG files between 15 and 25 percent, and for JPEGs compressed at low-quality settings, can produce improvements of up to 65%.<sup class="reference"><a href="http://en.wikipedia.org/wiki/JPEG#cite_note-stirner-7"></a></sup><sup class="reference"><a href="http://en.wikipedia.org/wiki/JPEG#cite_note-matsuda-8"></a></sup></p>
<p>A freely-available tool called <a class="external text" title="http://www.elektronik.htw-aalen.de/packjpg/" rel="nofollow" href="http://www.elektronik.htw-aalen.de/packjpg/">PackJPG</a> is based on the 2007 paper &#8220;Improved Redundancy Reduction for JPEG Files.&#8221; There are also at least two companies selling proprietary tools with similar capabilities, Infima&#8217;s JPACK and Allume&#8217;s <a title="StuffIt" href="http://en.wikipedia.org/wiki/StuffIt">StuffIt</a> Deluxe, both of which claim to have pending patents on their respective undisclosed technologies.</p>
<p>In 2002 <a class="mw-redirect" title="Forgent Networks" href="http://en.wikipedia.org/wiki/Forgent_Networks">Forgent Networks</a> asserted that it owned and would enforce <a title="Patent" href="http://en.wikipedia.org/wiki/Patent">patent</a> rights on the JPEG technology, arising from a patent that had been filed on <a title="October 27" href="http://en.wikipedia.org/wiki/October_27">October 27</a>, <a title="1986" href="http://en.wikipedia.org/wiki/1986">1986</a>, and granted on <a title="October 6" href="http://en.wikipedia.org/wiki/October_6">October 6</a>, <a title="1987" href="http://en.wikipedia.org/wiki/1987">1987</a> (<span class="plainlinks"><a class="external text" title="http://patft.uspto.gov/netacgi/nph-Parser?patentnumber=4698672" rel="nofollow" href="http://patft.uspto.gov/netacgi/nph-Parser?patentnumber=4698672">U.S. Patent 4,698,672</a></span><span class="PDFlink noprint"><a class="external text" title="http://www.pat2pdf.org/pat2pdf/foo.pl?number=4698672" rel="nofollow" href="http://www.pat2pdf.org/pat2pdf/foo.pl?number=4698672"> </a></span>). The announcement created a furor reminiscent of <a title="Unisys" href="http://en.wikipedia.org/wiki/Unisys">Unisys</a>&#8216; attempts to assert its rights over the GIF image compression standard.</p>
<p>The JPEG committee investigated the patent claims in 2002 and were of the opinion that they were invalidated by <a title="Prior art" href="http://en.wikipedia.org/wiki/Prior_art">prior art</a>.<sup class="reference"><a href="http://en.wikipedia.org/wiki/JPEG#cite_note-9"></a></sup> Others also concluded that Forgent did not have a patent that covered JPEG.<sup class="reference"><a href="http://en.wikipedia.org/wiki/JPEG#cite_note-10"></a></sup> Nevertheless, between 2002 and 2004 Forgent was able to obtain about US$105 million by licensing their patent to some 30 companies. In April 2004, Forgent sued 31 other companies to enforce further license payments. In July of the same year, a consortium of 21 large computer companies filed a countersuit, with the goal of invalidating the patent. In contrast to other major computer companies such as Sony and Philips, Microsoft launched a major lawsuit against Forgent. In February 2006, the <a title="United States Patent and Trademark Office" href="http://en.wikipedia.org/wiki/United_States_Patent_and_Trademark_Office">United States Patent and Trademark Office</a> agreed to re-examine Forgent&#8217;s JPEG patent at the request of the <a title="Public Patent Foundation" href="http://en.wikipedia.org/wiki/Public_Patent_Foundation">Public Patent Foundation</a>.<sup class="reference"><a href="http://en.wikipedia.org/wiki/JPEG#cite_note-reexam-11"></a></sup> On <a title="May 26" href="http://en.wikipedia.org/wiki/May_26">May 26</a>, <a title="2006" href="http://en.wikipedia.org/wiki/2006">2006</a> the USPTO found the patent invalid based on prior art. The USPTO also found that Forgent knew about the <a title="Prior art" href="http://en.wikipedia.org/wiki/Prior_art">prior art</a>, and did not tell the Patent Office, making any appeal to reinstate the patent highly unlikely to succeed.<sup class="reference"><a href="http://en.wikipedia.org/wiki/JPEG#cite_note-12"></a></sup></p>
<p>Forgent also possesses a similar patent granted by the European Patent Office in 1994, though it is unclear how enforceable it is.<sup class="reference"><a href="http://en.wikipedia.org/wiki/JPEG#cite_note-ep266049-13"></a></sup></p>
<p>As of <a title="October 27" href="http://en.wikipedia.org/wiki/October_27">October 27</a>, <a title="2006" href="http://en.wikipedia.org/wiki/2006">2006</a>, the U.S. patent&#8217;s 20-year term appears to have expired, and in November 2006, Forgent agreed to abandon enforcement of patent claims against use of the JPEG standard.<sup class="reference"><a href="http://en.wikipedia.org/wiki/JPEG#cite_note-surrendered-14"></a></sup></p>
<p>The JPEG committee has as one of its explicit goals that their standards (in particular their baseline methods) be implementable without payment of license fees, and they have secured appropriate license rights for their upcoming <a title="JPEG 2000" href="http://en.wikipedia.org/wiki/JPEG_2000">JPEG 2000</a> standard from over 20 large organizations.</p>
<p>Beginning in August 2007, another company, Global Patent Holdings, LLC claimed that its patent (<span class="plainlinks"><a class="external text" title="http://patft.uspto.gov/netacgi/nph-Parser?patentnumber=5,253,341" rel="nofollow" href="http://patft.uspto.gov/netacgi/nph-Parser?patentnumber=5,253,341">U.S. Patent 5,253,341</a></span><span class="PDFlink noprint"><a class="external text" title="http://www.pat2pdf.org/pat2pdf/foo.pl?number=5,253,341" rel="nofollow" href="http://www.pat2pdf.org/pat2pdf/foo.pl?number=5,253,341"> </a></span>), is infringed by the downloading of JPEG images on either a website or through e-mail. If not invalidated, this patent could apply to any website that displays JPEG images. The patent emerged in July 2007 following a seven-year reexamination by the U.S. Patent and Trademark Office in which all of the original claims of the patent were revoked, but an additional claim (claim 17) was confirmed.<sup class="reference"><a href="http://en.wikipedia.org/wiki/JPEG#cite_note-GPHLaw1-15"></a></sup> In its first two lawsuits following the reexamination, both filed in Chicago, Illinois, Global Patent Holdings sued the Green Bay Packers, CDW, Motorola, Apple, Orbitz, Officemax, Caterpillar, Kraft and Peapod as defendants. A third lawsuit was filed on December 5, 2007 in Southern Florida against ADT Security Services, AutoNation, Florida Crystals Corp., HearUSA, MovieTickets.com, Ocwen Financial Corp. and Tire Kingdom, and a fourth lawsuit on January 8, 2008 in Southern Florida against the Boca Raton Resort &amp; Club. A fifth lawsuit was filed against Global Patent Holdings in Nevada. That lawsuit was filed by Zappos.com, Inc., who was allegedly threatened by Global Patent Holdings, and seeks a judicial declaration that the &#8216;341 patent is invalid and not infringed. The patent owner has also used the patent to sue or threaten outspoken critics of broad software patents, including Gregory Aharonian<sup class="reference"><a href="http://en.wikipedia.org/wiki/JPEG#cite_note-GPHLaw2-16"></a></sup> and the anonymous operator of a website blog known as the &#8220;Patent Troll Tracker.&#8221;<sup class="reference"><a href="http://en.wikipedia.org/wiki/JPEG#cite_note-GPHLaw3-17"></a></sup> On December 21, 2007, patent lawyer Vernon Francissen of Chicago asked the U.S. Patent and Trademark Office to reexamine the sole remaining claim of the &#8216;341 patent on the basis of new prior art.<sup class="reference"><a href="http://en.wikipedia.org/wiki/JPEG#cite_note-GPHLaw4-18"></a></sup> On March 5, 2008, the U.S. Patent and Trademark Office agreed to reexamine the &#8216;341 patent, finding that the new prior art raised substantial new questions regarding the patent&#8217;s validity.<sup class="reference"><a href="http://en.wikipedia.org/wiki/JPEG#cite_note-GPHLaw11-19"></a></sup> In light of the reexamination, the accused infringers in four of the five pending lawsuits have filed motions to suspend (stay) their cases until completion of the U.S. Patent and Trademark Office&#8217;s review of the &#8216;341 patent. On April 23, 2008, a judge presiding over the two lawsuits in Chicago, Illinois granted the motions in those cases.<sup class="reference"><a href="http://en.wikipedia.org/wiki/JPEG#cite_note-GPHLaw55-20"></a></sup> On July 22, 2008, the Patent Office issued the first &#8220;Office Action&#8221; of the second reexamination, finding the claim invalid based on nineteen separate grounds.<sup class="reference"><a href="http://en.wikipedia.org/wiki/JPEG#cite_note-GPHLaw66-21"></a></sup></p>
<ul>
<li>JPEG (lossy and lossless): ITU-T T.81, ISO/IEC IS 10918-1</li>
<li>JPEG (extensions): ITU-T T.84</li>
<li><a class="mw-redirect" title="JPEG-LS" href="http://en.wikipedia.org/wiki/JPEG-LS">JPEG-LS</a> (lossless, improved): ITU-T T.87, ISO/IEC IS 14495-1</li>
<li><a title="JBIG" href="http://en.wikipedia.org/wiki/JBIG">JBIG</a> (black and white pictures): ITU-T T.82, ISO/IEC IS 11544-1</li>
<li><a title="JPEG 2000" href="http://en.wikipedia.org/wiki/JPEG_2000">JPEG 2000</a> (successor of JPEG/JPEG-LS): ITU-T T.800, ISO/IEC IS 15444-1</li>
<li>JPEG-2000 (extensions): ITU-T T.801</li>
<li><a class="mw-redirect" title="JPEG XR" href="http://en.wikipedia.org/wiki/JPEG_XR">JPEG XR</a> (formerly called HD Photo) undergoing final voting as ISO/IEC 29199-2</li>
</ul>
<p><strong>3. PNG</strong></p>
<p><strong>Portable Network Graphics</strong> (<strong>PNG</strong>) is a <a title="Raster graphics" href="http://en.wikipedia.org/wiki/Raster_graphics">bitmapped</a> <a title="Graphics file format" href="http://en.wikipedia.org/wiki/Graphics_file_format">image format</a> that employs <a title="Lossless data compression" href="http://en.wikipedia.org/wiki/Lossless_data_compression">lossless data compression</a>. PNG was created to improve upon and replace <a title="Graphics Interchange Format" href="http://en.wikipedia.org/wiki/Graphics_Interchange_Format">GIF</a> (Graphics Interchange Format) as an image-file format not requiring a <a title="Patent" href="http://en.wikipedia.org/wiki/Patent">patent</a> license. It is pronounced <span class="IPA" title="Pronunciation in the International Phonetic Alphabet (IPA)"><a title="IPA for English" href="http://en.wikipedia.org/wiki/Wikipedia:IPA_for_English">/ˈpɪŋ/</a></span> <sup class="reference"><a href="http://en.wikipedia.org/wiki/Portable_Network_Graphics#cite_note-0"></a></sup> or spelled out as P-N-G. The PNG <a title="Acronym and initialism" href="http://en.wikipedia.org/wiki/Acronym_and_initialism">initialism</a> is optionally <a title="Recursive acronym" href="http://en.wikipedia.org/wiki/Recursive_acronym">recursive</a>, unofficially standing for “<strong>P</strong>NG&#8217;s <strong>N</strong>ot <strong>G</strong>IF”.<sup class="reference"><a href="http://en.wikipedia.org/wiki/Portable_Network_Graphics#cite_note-1"></a></sup></p>
<p>PNG supports palette-based (palettes of 24-bit <a title="RGB color model" href="http://en.wikipedia.org/wiki/RGB_color_model">RGB</a> colors), <a class="mw-redirect" title="Greyscale" href="http://en.wikipedia.org/wiki/Greyscale">greyscale</a> or RGB images. PNG was designed for transferring images on the Internet, not professional graphics, and so does not support other <a title="Color space" href="http://en.wikipedia.org/wiki/Color_space">color spaces</a> (such as <a title="CMYK color model" href="http://en.wikipedia.org/wiki/CMYK_color_model">CMYK</a>).</p>
<p>PNG files nearly always use file-extension &#8220;<code>PNG</code>&#8221; or &#8220;<code>png</code>&#8221; and are assigned <a title="MIME" href="http://en.wikipedia.org/wiki/MIME">MIME</a> media type &#8220;<code>image/png</code>&#8221; (approved October 14, 1996).</p>
<p>The motivation for creating the PNG format came in early 1995 when it came to light that the <a class="mw-redirect" title="LZW" href="http://en.wikipedia.org/wiki/LZW">LZW</a> <a title="Data compression" href="http://en.wikipedia.org/wiki/Data_compression">data compression</a> algorithm used in the <a title="Graphics Interchange Format" href="http://en.wikipedia.org/wiki/Graphics_Interchange_Format">GIF</a> format had been <a title="Patent" href="http://en.wikipedia.org/wiki/Patent">patented</a> by <a title="Unisys" href="http://en.wikipedia.org/wiki/Unisys">Unisys</a>. For more on this controversy see <a title="Graphics Interchange Format" href="http://en.wikipedia.org/wiki/Graphics_Interchange_Format#Unisys_and_LZW_patent_enforcement">GIF (Unisys and LZW patent enforcement)</a>. There were also other problems with the GIF format which made a replacement desirable, notably its limitation to 256 <a title="Color" href="http://en.wikipedia.org/wiki/Color">colors</a> at a time when computers capable of displaying far more than 256 colors were becoming common. Although GIF allows for <a title="Computer animation" href="http://en.wikipedia.org/wiki/Computer_animation">animation</a>, it was decided that PNG should be a single-image format. A companion format called <a title="Multiple-image Network Graphics" href="http://en.wikipedia.org/wiki/Multiple-image_Network_Graphics">MNG</a> (Multi-image Network Graphics) has been defined for animation.</p>
<p>A precursory discussion thread on <a class="mw-redirect" title="Newsgroup" href="http://en.wikipedia.org/wiki/Newsgroup">newsgroup</a> &#8220;comp.graphics&#8221; with the subject <em>Thoughts on a GIF-replacement file format</em>, dating back to January 1995 has many propositions which would later be part of the PNG file format, and displays <a class="new" title="Oliver Fromme (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=Oliver_Fromme&amp;action=edit&amp;redlink=1">Oliver Fromme</a>, author of the popular <a title="MS-DOS" href="http://en.wikipedia.org/wiki/MS-DOS">MS-DOS</a> <a title="JPEG" href="http://en.wikipedia.org/wiki/JPEG">JPEG</a> viewer <a title="QPEG" href="http://en.wikipedia.org/wiki/QPEG">QPEG</a>, proposing the PING name meaning <em>PING is not GIF</em>, and also the PNG extension for the first time.<sup class="reference"><a href="http://en.wikipedia.org/wiki/Portable_Network_Graphics#cite_note-fromme-2"></a></sup></p>
<ul>
<li>October 1, 1996 – Version 1.0 of the PNG specification was released, and later appeared as <a title="Request for Comments" href="http://en.wikipedia.org/wiki/Request_for_Comments">RFC</a> 2083. It became a <a title="World Wide Web Consortium" href="http://en.wikipedia.org/wiki/World_Wide_Web_Consortium">W3C</a> Recommendation on October 1, 1996.</li>
<li>December 31, 1998 – Version 1.1, with some small changes and the addition of three new chunks, was released.</li>
<li>August 11, 1999 – Version 1.2, adding one extra chunk, was released.</li>
<li>November 10, 2003 – PNG is now an International Standard (<a title="International Organization for Standardization" href="http://en.wikipedia.org/wiki/International_Organization_for_Standardization">ISO</a>/<a title="International Electrotechnical Commission" href="http://en.wikipedia.org/wiki/International_Electrotechnical_Commission">IEC</a> 15948:2003). This version of PNG differs only slightly from version 1.2 and adds no new chunks.</li>
<li>March 3, 2004 – <a class="external text" title="http://www.iso.org/iso/en/CatalogueDetailPage.CatalogueDetail?CSNUMBER=29581&amp;scopelist=PROGRAMME" rel="nofollow" href="http://www.iso.org/iso/en/CatalogueDetailPage.CatalogueDetail?CSNUMBER=29581&amp;scopelist=PROGRAMME">ISO/IEC 15948:2004</a>.</li>
</ul>
<p>A PNG file starts with an 8-<a title="Byte" href="http://en.wikipedia.org/wiki/Byte">byte</a> <a title="Magic number (programming)" href="http://en.wikipedia.org/wiki/Magic_number_%28programming%29">signature</a>. The <a title="Hexadecimal" href="http://en.wikipedia.org/wiki/Hexadecimal">hexadecimal</a> byte values are 89 50 4E 47 0D 0A 1A 0A. Each of the header bytes is there for a specific reason:<sup class="reference"><a href="http://en.wikipedia.org/wiki/Portable_Network_Graphics#cite_note-3"></a></sup></p>
<p>After the header come a series of chunks, each of which conveys certain information about the image. Chunks declare themselves as <em>critical</em> or <em>ancillary</em>, and a program encountering an ancillary chunk that it does not understand can safely ignore it. This chunk-based structure is designed to allow the PNG format to be extended while maintaining compatibility with older versions.</p>
<p>The chunks each have a header specifying their size and type. This is immediately followed by the actual data, and then the <a title="Cyclic redundancy check" href="http://en.wikipedia.org/wiki/Cyclic_redundancy_check">checksum</a> of the data. Chunks are given a four letter <a title="Case sensitivity" href="http://en.wikipedia.org/wiki/Case_sensitivity">case sensitive</a> ASCII name. The case of the different letters in the name (bit 5 of the numeric value of the character) provides the <a title="Decoder" href="http://en.wikipedia.org/wiki/Decoder">decoder</a> with some information on the nature of chunks it does not recognize.</p>
<p>The case of the first letter indicates if the chunk is critical or not. If the first letter is uppercase, the chunk is critical; if not, the chunk is ancillary. Critical chunks contain information that is necessary to read the file. If a decoder encounters a critical chunk it does not recognize, it must abort reading the file or supply the user with an appropriate warning.</p>
<p>The case of the second letter indicates if the chunk is &#8220;public&#8221; (either in the specification or the registry of special purpose public chunks) or &#8220;private&#8221; (not standardised). Uppercase is public and lowercase is private. This ensures that public and private chunk names can never conflict with each other (although two private chunk names could conflict).</p>
<p>The third letter must be uppercase to conform to the PNG specification. It is reserved for future expansion. Decoders should treat a chunk with a lower case third letter the same as any other unrecognised chunk.</p>
<p>The case of the fourth letter indicates if a chunk is safe to copy by editors that do not recognize it. If lowercase, the chunk may be safely copied regardless of the extent of modifications to the file. If uppercase, it may only be copied if the modifications have not touched any critical chunks.</p>
<p>A decoder must be able to interpret these to read and render a PNG file.</p>
<ul>
<li><code>IHDR</code> must be the first chunk, it contains the header.</li>
<li><code>PLTE</code> contains the <a title="Palette (computing)" href="http://en.wikipedia.org/wiki/Palette_%28computing%29">palette</a>; list of colors.</li>
<li><code>IDAT</code> contains the image, which may be split among multiple IDAT chunks. Doing so increases filesize slightly, but makes it possible to generate a PNG in a streaming manner.</li>
<li><code>IEND</code> marks the image end.</li>
</ul>
<p>The <code>PLTE</code> chunk is essential for color type 3 (indexed color). It is optional for color types 2 and 6 (truecolor and truecolor with alpha) and it must not appear for color types 0 and 4 (greyscale and greyscale with alpha).</p>
<p>Other image attributes that can be stored in PNG files include <a title="Gamma correction" href="http://en.wikipedia.org/wiki/Gamma_correction">gamma</a> values, background color, and textual <a title="Metadata" href="http://en.wikipedia.org/wiki/Metadata">metadata</a> information. PNG also supports <a title="Color management" href="http://en.wikipedia.org/wiki/Color_management">color management</a> through the inclusion of <a title="International Color Consortium" href="http://en.wikipedia.org/wiki/International_Color_Consortium">ICC</a> <a title="Color space" href="http://en.wikipedia.org/wiki/Color_space">color space</a> profiles.<sup class="reference"><a href="http://en.wikipedia.org/wiki/Portable_Network_Graphics#cite_note-4"></a></sup></p>
<ul>
<li>bKGD gives the default background color. It is intended for use when there is no better choice available, such as in standalone image viewers (but not web browsers, see below for more details).</li>
<li>cHRM gives the <a class="mw-redirect" title="White balance" href="http://en.wikipedia.org/wiki/White_balance">white balance</a>.</li>
<li>gAMA specifies <a title="Gamma correction" href="http://en.wikipedia.org/wiki/Gamma_correction">gamma</a>.</li>
<li>hIST can store the histogram, or total amount of each color in the image.</li>
<li>iCCP is an <a class="mw-redirect" title="ICC color profile" href="http://en.wikipedia.org/wiki/ICC_color_profile">ICC color profile</a>.</li>
<li>iTXt contains <a title="UTF-8" href="http://en.wikipedia.org/wiki/UTF-8">UTF-8</a> text, compressed or not, with an optional <a title="IETF language tag" href="http://en.wikipedia.org/wiki/IETF_language_tag">language tag</a>.</li>
<li>pHYs holds the intended pixel size and/or <a title="Aspect ratio" href="http://en.wikipedia.org/wiki/Aspect_ratio">aspect ratio</a> of the image.</li>
<li>sBIT (significant bits) indicates the color-accuracy of the source data.</li>
<li>sPLT suggests a palette to use if the full range of colors is unavailable.</li>
<li>sRGB indicates that the standard <a class="mw-redirect" title="SRGB color space" href="http://en.wikipedia.org/wiki/SRGB_color_space">sRGB color space</a> is used.</li>
<li>tEXt can store text that can be represented in <a class="mw-redirect" title="ISO 8859-1" href="http://en.wikipedia.org/wiki/ISO_8859-1">ISO 8859-1</a>, with one name=value pair for each chunk.</li>
<li>tIME stores the time that the image was last changed.</li>
<li>tRNS contains transparency information. For indexed images, it stores alpha channel values for one or more palette entries. For truecolor and greyscale images, it stores a single pixel value that is to be regarded as fully transparent.</li>
<li>zTXt contains compressed text with the same limits as tEXt.</li>
</ul>
<p>The lowercase first letter in these chunks indicates that they are not needed for the PNG specification. The lowercase last letter in some chunks indicates that they are safe to copy, even if the application concerned does not understand them.</p>
<p>PNG images can either use palette-indexed color or be made up of one or more channels (numerical values directly representing quantities about the pixels). When there is more than one channel in an image all channels have the same number of bits allocated per pixel (known as the <a title="Bit depth" href="http://en.wikipedia.org/wiki/Bit_depth">bit depth</a> of the channel). Although the PNG specification always talks about the bit depth of channels, most software and users generally talk about the total number of bits per pixel (sometimes also referred to as bit depth or <a title="Color depth" href="http://en.wikipedia.org/wiki/Color_depth">color depth</a>). Since multiple channels can affect a single pixel, the number of bits per pixel is often higher than the number of bits per channel, as shown in the illustration below.</p>
<p>The number of channels will depend on whether the image is greyscale or color and whether it has an <a class="mw-redirect" title="Alpha channel" href="http://en.wikipedia.org/wiki/Alpha_channel">alpha channel</a>. PNG allows the following combinations of channels:</p>
<ul>
<li>indexed (channel containing indexes into a palette of colors)</li>
<li>greyscale</li>
<li>greyscale and alpha (level of transparency for each pixel)</li>
<li>red, green and blue (rgb/truecolor)</li>
<li>red, green, blue and alpha</li>
</ul>
<p>With indexed color images, the palette is always stored in RGB at a depth of 8 bits per channel (24 bits per palette entry). The palette must not have more entries than the image bitdepth allows for but it may have fewer (so if an image for example only uses 90 colors there is no need to have palette entries for all 256).</p>
<p>Indexed color PNGs are allowed to have 1, 2, 4 or 8 bits per pixel by the standard; greyscale images with no alpha channel allow for 1, 2, 4, 8 or 16 bits per pixel. Everything else uses a bit depth per channel of either 8 or 16. The combinations this allows are given in the table above. The standard requires that decoders can read all supported color formats but many image editors can only produce a small subset of them.</p>
<p>PNG offers a variety of transparency options. With truecolor and greyscale images either a single pixel value can be declared as transparent or an alpha channel can be added. For paletted images, alpha values can be added to palette entries. The number of such values stored may be less than the total number of palette entries, in which case the remaining entries are considered fully opaque.</p>
<p>The scanning of pixel values for binary transparency is supposed to be performed before any color reduction to avoid pixels becoming unintentionally transparent. This is most likely to pose an issue for systems that can decode 16 bits per channel images (as they must be compliant with the specification) but only output at 8 bits per channel (the norm for all but the highest end systems).</p>
<p>PNG uses a non-patented <a title="Lossless data compression" href="http://en.wikipedia.org/wiki/Lossless_data_compression">lossless data compression</a> method known as <a class="mw-redirect" title="DEFLATE (algorithm)" href="http://en.wikipedia.org/wiki/DEFLATE_%28algorithm%29">DEFLATE</a>, which is the same algorithm used in the <a title="Zlib" href="http://en.wikipedia.org/wiki/Zlib">zlib</a> compression library. This method is combined with prediction, where for each image line, a <em>filter method</em> is chosen that predicts the color of each pixel based on the colors of previous pixels and subtracts the predicted color of the pixel from the actual color. An image line filtered in this way is often more compressible than the raw image line would be, especially if it is similar to the line above (since deflate has no understanding that an image is a 2D entity, and instead just sees the image data as a stream of bytes). Compression is further improved by choosing filter methods adaptively on a line-by-line basis. This improvement, and a heuristic method of implementing it commonly used by PNG-writing software, were created by <a title="Lee Daniel Crocker" href="http://en.wikipedia.org/wiki/Lee_Daniel_Crocker">Lee Daniel Crocker</a>, who tested the methods on many images during the creation of the format.<sup class="reference"><a href="http://en.wikipedia.org/wiki/Portable_Network_Graphics#cite_note-6"></a></sup></p>
<p>PNG offers an optional 2-dimensional, 7-pass <a class="mw-redirect" title="Interlace (bitmaps)" href="http://en.wikipedia.org/wiki/Interlace_%28bitmaps%29">interlacing</a> scheme – the <a title="Adam7 algorithm" href="http://en.wikipedia.org/wiki/Adam7_algorithm">Adam7 algorithm</a>. This is more sophisticated than GIF&#8217;s 1-dimensional, 4-pass scheme, and allows a clearer low-resolution image to be visible earlier in the transfer. However, as a 7-pass scheme, it tends to reduce the data&#8217;s compressibility more than simpler schemes.</p>
<p>PNG itself does not support animation at all. <a title="Multiple-image Network Graphics" href="http://en.wikipedia.org/wiki/Multiple-image_Network_Graphics">MNG</a> is an extension to PNG that does; it was designed by members of the PNG Group. MNG shares PNG&#8217;s basic structure and chunks, but it is significantly more complex and has a different file signature, which automatically renders it incompatible with standard PNG decoders.</p>
<p>The complexity of MNG led to the proposal of <a class="mw-redirect" title="Animated Portable Network Graphics" href="http://en.wikipedia.org/wiki/Animated_Portable_Network_Graphics">APNG</a> by developers of the Mozilla Foundation. It is based on PNG, supports animation and is simpler than MNG. APNG offers fallback to single-image display for PNG decoders that do not support APNG. However, neither of these formats is currently widely supported. APNG is supported in <a title="Mozilla Firefox" href="http://en.wikipedia.org/wiki/Mozilla_Firefox">Firefox</a> 3.0 and <a title="Opera (web browser)" href="http://en.wikipedia.org/wiki/Opera_%28web_browser%29">Opera</a> 9.5.<sup class="reference"><a href="http://en.wikipedia.org/wiki/Portable_Network_Graphics#cite_note-7"></a></sup> The PNG Group decided in April 2007 not to embrace APNG<sup class="reference"><a href="http://en.wikipedia.org/wiki/Portable_Network_Graphics#cite_note-8"><span>[</span>9<span>]</span></a></sup>. Several alternatives are under discussion, <a class="new" title="Aminated Network Graphics (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=Aminated_Network_Graphics&amp;action=edit&amp;redlink=1">ANG</a>, <a title="ANIM" href="http://en.wikipedia.org/wiki/ANIM">aNIM</a>/<a class="new" title="MPNG (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=MPNG&amp;action=edit&amp;redlink=1">mPNG</a>, <a class="new" title="PNG in GIF (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=PNG_in_GIF&amp;action=edit&amp;redlink=1">PNG in GIF</a> and its subset <a class="new" title="RGBA in GIF (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=RGBA_in_GIF&amp;action=edit&amp;redlink=1">RGBA in GIF</a>.<sup class="reference"><a href="http://en.wikipedia.org/wiki/Portable_Network_Graphics#cite_note-9"></a></sup></p>
<p><a title="Adobe Fireworks" href="http://en.wikipedia.org/wiki/Adobe_Fireworks">Adobe Fireworks</a> (formerly by <a title="Macromedia" href="http://en.wikipedia.org/wiki/Macromedia">Macromedia</a>) uses PNG as its native file format, allowing other image editors and preview utilities to view the flattened image. However, Fireworks by default also stores meta data for layers, animation, vector data, text and effects. Such files should not be distributed directly. Fireworks can instead export the image as an optimized PNG without the extra meta data for use on web pages, etc.<sup class="reference"><a href="http://en.wikipedia.org/wiki/Portable_Network_Graphics#cite_note-11"></a></sup></p>
<p>Other popular graphics programs which support the PNG format include <a title="Adobe Photoshop" href="http://en.wikipedia.org/wiki/Adobe_Photoshop">Adobe Photoshop</a>, <a title="Corel Photo-Paint" href="http://en.wikipedia.org/wiki/Corel_Photo-Paint">Corel Photo-Paint</a>, <a class="mw-redirect" title="Corel PaintShop Pro" href="http://en.wikipedia.org/wiki/Corel_PaintShop_Pro">Corel PaintShop Pro</a>, <a title="GIMP" href="http://en.wikipedia.org/wiki/GIMP">The GIMP</a>, <a title="GraphicConverter" href="http://en.wikipedia.org/wiki/GraphicConverter">GraphicConverter</a>, <a title="Helicon Filter" href="http://en.wikipedia.org/wiki/Helicon_Filter">Helicon Filter</a>, <a title="Inkscape" href="http://en.wikipedia.org/wiki/Inkscape">Inkscape</a>, <a class="mw-redirect" title="Jasc Paint Shop Pro" href="http://en.wikipedia.org/wiki/Jasc_Paint_Shop_Pro">Jasc Paint Shop Pro</a> (Corel), <a title="Pixel image editor" href="http://en.wikipedia.org/wiki/Pixel_image_editor">Pixel image editor</a>, <a title="Paint.NET" href="http://en.wikipedia.org/wiki/Paint.NET">Paint.NET</a> and <a title="Xara Xtreme" href="http://en.wikipedia.org/wiki/Xara_Xtreme">Xara</a>. Some programs bundled with popular <a title="Operating system" href="http://en.wikipedia.org/wiki/Operating_system">operating systems</a> which support PNG include Microsoft&#8217;s <a class="mw-redirect" title="Microsoft Paint" href="http://en.wikipedia.org/wiki/Microsoft_Paint">Paint</a> and Apple&#8217;s <a title="IPhoto" href="http://en.wikipedia.org/wiki/IPhoto">iPhoto</a> and <a title="Preview (software)" href="http://en.wikipedia.org/wiki/Preview_%28software%29">Preview</a>.</p>
<p>Some image processing programs have PNG compression problems, mainly related to lack of full implementation of the PNG compressor library.<sup class="noprint Template-Fact"><span style="white-space:nowrap;" title="This claim needs references to reliable sources since July 2008">[<em><a title="Citation needed" href="http://en.wikipedia.org/wiki/Wikipedia:Citation_needed">citation needed</a></em>]</span></sup> These include:</p>
<ul>
<li>Microsoft&#8217;s Paint for Windows XP</li>
<li>Microsoft Picture It! Photo Premium 9</li>
<li>older versions of Adobe Photoshop.</li>
</ul>
<p>Adobe&#8217;s Fireworks is sometimes placed in this category, but its difficulties are less severe than the other entries. The confusion stems from a misunderstanding of the mechanics of its <em>Save</em> format: though PNGs, the intermediate images produced by that option include large, private chunks containing complete layer and vector information, which allows further, lossless editing. Properly saved with the <em>Export</em> option, Fireworks&#8217; PNGs are competitive with those produced by other image editors, but are no longer editable as anything but flattened bitmaps. Fireworks is unable to save size-optimized vector-editable PNGs.</p>
<p>PNG support first appeared in <a title="Internet Explorer" href="http://en.wikipedia.org/wiki/Internet_Explorer">Internet Explorer</a> 4.0b1 and in <a title="Netscape" href="http://en.wikipedia.org/wiki/Netscape">Netscape</a> 4.04<sup class="reference"><a href="http://en.wikipedia.org/wiki/Portable_Network_Graphics#cite_note-12"></a></sup>.</p>
<p>Despite calls by the <a title="Free Software Foundation" href="http://en.wikipedia.org/wiki/Free_Software_Foundation">Free Software Foundation</a><sup class="reference"><a href="http://en.wikipedia.org/wiki/Portable_Network_Graphics#cite_note-13"></a></sup> and the <a class="mw-redirect" title="W3c" href="http://en.wikipedia.org/wiki/W3c">w3c</a><sup class="reference"><a href="http://en.wikipedia.org/wiki/Portable_Network_Graphics#cite_note-14"></a></sup>, tools such as <a class="external text" title="http://www.catb.org/~esr/gif2png/" rel="nofollow" href="http://www.catb.org/%7Eesr/gif2png/">gif2png</a>, and campaigns such as <a class="external text" title="http://burnallgifs.org/" rel="nofollow" href="http://burnallgifs.org/">burn all gifs</a>, PNG adoption on websites has been fairly slow.</p>
<p><a class="mw-redirect" title="GIF" href="http://en.wikipedia.org/wiki/GIF">GIF</a> is found to be in use more than PNG for a few reasons:</p>
<ul>
<li>No support on old browsers (such as <a title="Internet Explorer" href="http://en.wikipedia.org/wiki/Internet_Explorer">Internet Explorer</a> below version 4).</li>
<li>No animation, still images only (unlike GIF, though Mozilla&#8217;s unofficial <a title="APNG" href="http://en.wikipedia.org/wiki/APNG">APNG</a> format is a potential solution).</li>
</ul>
<p>PNG compatible browsers include: Apple <a title="Safari (web browser)" href="http://en.wikipedia.org/wiki/Safari_%28web_browser%29">Safari</a>, <a title="Google Chrome" href="http://en.wikipedia.org/wiki/Google_Chrome">Google Chrome</a>, <a title="Mozilla Firefox" href="http://en.wikipedia.org/wiki/Mozilla_Firefox">Mozilla Firefox</a>, <a title="Opera (web browser)" href="http://en.wikipedia.org/wiki/Opera_%28web_browser%29">Opera</a>, <a title="Camino" href="http://en.wikipedia.org/wiki/Camino">Camino</a>, <a title="Internet Explorer 7" href="http://en.wikipedia.org/wiki/Internet_Explorer_7">Internet Explorer 7</a>, and many others. For the complete comparison, see <a title="Comparison of web browsers" href="http://en.wikipedia.org/wiki/Comparison_of_web_browsers#Image_format_support">Comparison of web browsers (Image format support)</a>.</p>
<p>However, <a title="Internet Explorer" href="http://en.wikipedia.org/wiki/Internet_Explorer">Internet Explorer</a> (Windows), before version 7, has a fair share of issues, which prevent it from using PNG to its full potential.<sup class="reference"><a href="http://en.wikipedia.org/wiki/Portable_Network_Graphics#cite_note-15"></a></sup></p>
<ul style="text-align:left;">
<li>4.0 crashes on large PNG chunks.<sup class="reference"><a href="http://en.wikipedia.org/wiki/Portable_Network_Graphics#cite_note-16"></a></sup></li>
<li>4.0 does not include the functionality to view .png files<sup class="reference"><a href="http://en.wikipedia.org/wiki/Portable_Network_Graphics#cite_note-17"></a></sup>, but there is a registry fix<sup class="reference"><a href="http://en.wikipedia.org/wiki/Portable_Network_Graphics#cite_note-18"></a></sup>.</li>
<li>5.0 and 5.01 has broken OBJECT support.<sup class="reference"><a href="http://en.wikipedia.org/wiki/Portable_Network_Graphics#cite_note-19"></a></sup></li>
<li>5.01 prints palette images with black (or dark gray) backgrounds under Windows 98, sometimes with radically altered colors.<sup class="reference"><a href="http://en.wikipedia.org/wiki/Portable_Network_Graphics#cite_note-20"></a></sup></li>
<li>6.0 fails to display PNG images of 4097 or 4098 bytes in size.<sup class="reference"><a href="http://en.wikipedia.org/wiki/Portable_Network_Graphics#cite_note-libpng.org-21"></a></sup><sup class="reference"><a href="http://en.wikipedia.org/wiki/Portable_Network_Graphics#cite_note-22"></a></sup></li>
<li>6.0 cannot open a PNG file that contains one or more zero-length IDAT chunks.<sup class="reference"><a href="http://en.wikipedia.org/wiki/Portable_Network_Graphics#cite_note-23"></a></sup></li>
<li>6.0 sometimes completely loses ability to display PNGs<sup class="reference"><a href="http://en.wikipedia.org/wiki/Portable_Network_Graphics#cite_note-24"></a></sup>, there are various fixes<sup class="reference"><a href="http://en.wikipedia.org/wiki/Portable_Network_Graphics#cite_note-libpng.org-21"></a></sup></li>
<li>6.0 and below fails to display alpha-channel of PNG images used as CSS background.<sup class="reference"><a href="http://en.wikipedia.org/wiki/Portable_Network_Graphics#cite_note-25"></a></sup></li>
<li>6.0 and below has inconsistent/broken gamma support.<sup class="reference"><a href="http://en.wikipedia.org/wiki/Portable_Network_Graphics#cite_note-26"></a></sup></li>
<li>6.0 and below has no ICC-profile (iCCP) support.<sup class="reference"><a href="http://en.wikipedia.org/wiki/Portable_Network_Graphics#cite_note-27"></a></sup></li>
<li>6.0 and below has no color-correction support.<sup class="reference"><a href="http://en.wikipedia.org/wiki/Portable_Network_Graphics#cite_note-28"></a></sup></li>
<li>6.0 and below has progressive display of interlaced images (replicating method).<sup class="noprint Template-Fact"><span style="white-space:nowrap;" title="This claim needs references to reliable sources since September 2008">[<em><a title="Citation needed" href="http://en.wikipedia.org/wiki/Wikipedia:Citation_needed">citation needed</a></em>]</span></sup></li>
<li>6.0 and below has broken alpha-channel transparency support (will display the default background color instead)<sup class="reference"><a href="http://en.wikipedia.org/wiki/Portable_Network_Graphics#cite_note-29"></a></sup><sup class="reference"><a href="http://en.wikipedia.org/wiki/Portable_Network_Graphics#cite_note-30"></a></sup><sup class="reference"><a href="http://en.wikipedia.org/wiki/Portable_Network_Graphics#cite_note-31"></a></sup>. However there are various fixes:
<ul>
<li><a class="external text" title="http://webfx.eae.net/dhtml/pngbehavior/pngbehavior.html" rel="nofollow" href="http://webfx.eae.net/dhtml/pngbehavior/pngbehavior.html">webfx &#8211; PNG Behavior</a> (IE behavior/.htc)</li>
<li><a class="external text" title="http://homepage.ntlworld.com/bobosola/" rel="nofollow" href="http://homepage.ntlworld.com/bobosola/">The PNG problem in Windows Internet Explorer</a> (IE behavior/.htc) (unmaintained)</li>
<li><a class="external text" title="http://www.twinhelix.com/css/iepngfix/" rel="nofollow" href="http://www.twinhelix.com/css/iepngfix/">TwinHelix &#8211; Near-native PNG support with alpha opacity to IE 5.5 and 6</a> (IE behavior/.htc)</li>
<li><a class="external text" title="http://pp.flixn.com/2008/05/11/a-better-ie-55-and-6-png-fix/" rel="nofollow" href="http://pp.flixn.com/2008/05/11/a-better-ie-55-and-6-png-fix/">A Better IE 5.5 and 6 PNG Fix (supports CSS background-position, background-repeat)</a> (IE behavior/.htc)</li>
<li><a class="external text" title="http://24ways.org/2007/supersleight-transparent-png-in-ie6" rel="nofollow" href="http://24ways.org/2007/supersleight-transparent-png-in-ie6">24ways.org &#8211; Transparent PNGs in Internet Explorer 6 by Drew McLellan</a> (Javascript)</li>
<li><a class="external text" title="http://www.bazon.net/mishoo/articles.epl?art_id=430" rel="nofollow" href="http://www.bazon.net/mishoo/articles.epl?art_id=430">PieNG — PNG support in MSIE/Win</a> (Javascript)</li>
<li><a class="external text" title="http://koivi.com/ie-png-transparency/" rel="nofollow" href="http://koivi.com/ie-png-transparency/">PNG-24 Alpha Transparency With Microsoft Internet Explorer or better (MSIE 5.5+)</a> (PHP)</li>
<li><a class="external text" title="http://blog.psyrendust.com/pngpong/" rel="nofollow" href="http://blog.psyrendust.com/pngpong/">PNGPong, an open source solution to display transparent PNGs in IE, Firefox, and Safari without the use of filters, PHP, or complicated Javascript and CSS</a> (JavaScript+Flash)</li>
<li><a class="external text" title="http://www.drunkenfist.com/304/2007/04/04/cross-browser-png-transparency-part-2/" rel="nofollow" href="http://www.drunkenfist.com/304/2007/04/04/cross-browser-png-transparency-part-2/">Cross Browser PNG Transparency</a> (CSS)</li>
<li><a class="external text" title="http://www.pluitsolutions.com/2008/04/11/solving-css-png-fix-background-none-call/" rel="nofollow" href="http://www.pluitsolutions.com/2008/04/11/solving-css-png-fix-background-none-call/">CSS PNG fix (with background call none fix)</a> (CSS)</li>
<li><a class="external text" title="http://www.sitepoint.com/blogs/2007/09/18/png8-the-clear-winner/" rel="nofollow" href="http://www.sitepoint.com/blogs/2007/09/18/png8-the-clear-winner/">SitePoint &#8211; Use 8-bit PNGs</a></li>
<li><a class="external text" title="http://dillerdesign.com/experiment/DD_belatedPNG/" rel="nofollow" href="http://dillerdesign.com/experiment/DD_belatedPNG/">dillerdesign belatedPNG</a> (JavaScript+VML)</li>
<li>Upgrade to <a class="external text" title="http://www.microsoft.com/windows/products/winfamily/ie/default.mspx" rel="nofollow" href="http://www.microsoft.com/windows/products/winfamily/ie/default.mspx">IE7</a>, which has full transparency support<sup class="reference"><a href="http://en.wikipedia.org/wiki/Portable_Network_Graphics#cite_note-32"></a></sup><sup class="reference"><a href="http://en.wikipedia.org/wiki/Portable_Network_Graphics#cite_note-33"></a></sup><sup class="reference"><a href="http://en.wikipedia.org/wiki/Portable_Network_Graphics#cite_note-34"></a></sup>.</li>
</ul>
</li>
</ul>
<p>PNG icons have been supported in most distributions of <a title="Linux" href="http://en.wikipedia.org/wiki/Linux">Linux</a> since at least 1999, in desktop environments such as <a title="GNOME" href="http://en.wikipedia.org/wiki/GNOME">GNOME</a><sup class="reference"><a href="http://en.wikipedia.org/wiki/Portable_Network_Graphics#cite_note-35"></a></sup>. In 2006, Microsoft introduced PNG icons into <a class="mw-redirect" title="Windows (operating system)" href="http://en.wikipedia.org/wiki/Windows_%28operating_system%29">Windows</a> with the release of <a title="Windows Vista" href="http://en.wikipedia.org/wiki/Windows_Vista">Windows Vista</a>.<sup class="reference"><a href="http://en.wikipedia.org/wiki/Portable_Network_Graphics#cite_note-36"></a></sup> PNG icons are supported in <a title="Mac OS X" href="http://en.wikipedia.org/wiki/Mac_OS_X">Mac OS X</a> as well. Another operating system to include 3rd party PNG icons support is <a title="AmigaOS" href="http://en.wikipedia.org/wiki/AmigaOS">AmigaOS</a> 3/4 (and its clones &#8211; <a title="MorphOS" href="http://en.wikipedia.org/wiki/MorphOS">MorphOS</a> and <a class="mw-redirect" title="AROS" href="http://en.wikipedia.org/wiki/AROS">AROS</a>).</p>
<p>Generally, PNG files without unnecessary metadata should have a smaller file size than the identical image encoded in GIF format. PNG gives the image creator far more flexibility than GIF, but care must be taken to avoid PNG files that are needlessly large.</p>
<p>As GIF is limited to 256 colors, many image editors will automatically reduce the color depth when saving an image in GIF format. Often when people save the same <a title="Truecolor" href="http://en.wikipedia.org/wiki/Truecolor">truecolor</a> image as PNG and GIF, they see that the GIF is smaller, and do not realise it is possible to create a 256 color PNG that has identical quality to the GIF with a smaller file size. This leads to the misconception that PNG files are larger than equivalent GIF files.</p>
<p>In practice, well optimized and compressed PNG files are usually much smaller than GIF files (10 % to 50 % savings) for filesizes above about 100 bytes.<sup class="noprint Template-Fact"><span style="white-space:nowrap;" title="This claim needs references to reliable sources since January 2008">[<em><a title="Citation needed" href="http://en.wikipedia.org/wiki/Wikipedia:Citation_needed">citation needed</a></em>]</span></sup></p>
<p>Some versions of <a title="Adobe Photoshop" href="http://en.wikipedia.org/wiki/Adobe_Photoshop">Adobe Photoshop</a>, <a title="CorelDRAW" href="http://en.wikipedia.org/wiki/CorelDRAW">CorelDRAW</a> and <a class="mw-redirect" title="MS Paint" href="http://en.wikipedia.org/wiki/MS_Paint">MS Paint</a> provide poor PNG compression effort, further fueling the idea that PNG is larger than GIF. Many graphics programs (such as Apple&#8217;s <a title="Preview (software)" href="http://en.wikipedia.org/wiki/Preview_%28software%29">Preview</a> software) save PNGs with large amounts of <a title="Metadata" href="http://en.wikipedia.org/wiki/Metadata">metadata</a> and color-correction data that are generally unnecessary for <a title="World Wide Web" href="http://en.wikipedia.org/wiki/World_Wide_Web">Web</a> viewing. Unoptimized PNG files from <a title="Adobe Fireworks" href="http://en.wikipedia.org/wiki/Adobe_Fireworks">Adobe Fireworks</a> are also notorious for this.</p>
<p>It should be noted that <a title="Adobe Photoshop" href="http://en.wikipedia.org/wiki/Adobe_Photoshop">Adobe Photoshop</a>&#8217;s performance on PNG files has been much improved in the CS Suite when using the Save For Web feature (which also allows explicit PNG/8 use).</p>
<p>Various tools are available for optimizing PNG files. <a title="OptiPNG" href="http://en.wikipedia.org/wiki/OptiPNG">OptiPNG</a> and <a title="Pngcrush" href="http://en.wikipedia.org/wiki/Pngcrush">pngcrush</a> are both <a class="mw-redirect" title="Open-source software" href="http://en.wikipedia.org/wiki/Open-source_software">open-source software</a> optimizers that run from a <a title="Unix" href="http://en.wikipedia.org/wiki/Unix">Unix</a> command line or a Windows Command Prompt, and effectively reduce the size of PNG files. The <a class="external text" title="http://sourceforge.net/projects/littleutils" rel="nofollow" href="http://sourceforge.net/projects/littleutils">littleutils</a> is another open-source package that contains a wrapper script called opt-png. This script utilizes <a title="Pngcrush" href="http://en.wikipedia.org/wiki/Pngcrush">pngcrush</a> and a variant of <a class="external text" title="http://entropymine.com/jason/pngrewrite/" rel="nofollow" href="http://entropymine.com/jason/pngrewrite/">pngrewrite</a> to reduce bit-depth when possible, reducing PNG file sizes further. <a title="Perl" href="http://en.wikipedia.org/wiki/Perl">Perl</a> scripts might wish to employ <a title="Image-Pngslimmer" href="http://en.wikipedia.org/wiki/Image-Pngslimmer">Image-Pngslimmer</a> which allows some dynamic optimization.</p>
<p>Other tools such as <a title="AdvanceCOMP" href="http://en.wikipedia.org/wiki/AdvanceCOMP">AdvanceCOMP</a> and <a title="Ken Silverman" href="http://en.wikipedia.org/wiki/Ken_Silverman">Ken Silverman</a>&#8217;s <a title="PNGOUT" href="http://en.wikipedia.org/wiki/PNGOUT">PNGOUT</a> are capable of reducing the file size even further still, giving the competent user the smallest file size possible for a given PNG image. The current version of <a title="IrfanView" href="http://en.wikipedia.org/wiki/IrfanView">IrfanView</a> can use PNGOUT as an external plug-in, and the screenshots show PNGOUT&#8217;s save options.</p>
<p><a class="external text" title="http://pmt.sourceforge.net/pngcrush/" rel="nofollow" href="http://pmt.sourceforge.net/pngcrush/">pngcrush</a> and PNGOUT have the extra ability to remove all color correction data from PNG files (gamma, white balance, ICC color profile, standard RGB color profile). This often results in much smaller file sizes. The following command line options achieve this with pngcrush:</p>
<p><code>pngcrush -rem gAMA -rem cHRM -rem iCCP -rem sRGB <em>InputFile.png</em> <em>OutputFile.png</em></code></p>
<p>There&#8217;s <a class="external text" title="http://pornel.net/imageoptim/en" rel="nofollow" href="http://pornel.net/imageoptim/en">GUI front-end</a> for OptiPNG, pngcrush and advpng that runs on Mac OS X.</p>
<p>Since Windows Vista <a title="Icon (computing)" href="http://en.wikipedia.org/wiki/Icon_%28computing%29">icons</a> may contain PNG subimages, the optimizations can be applied to them as well. At least one <a title="Icon editor" href="http://en.wikipedia.org/wiki/Icon_editor">icon editor</a>, <a class="external text" title="http://www.qualibyte.com/pixelformer/" rel="nofollow" href="http://www.qualibyte.com/pixelformer/">Pixelformer</a>, is able to perform a special optimization pass while saving <a title="ICO (icon image file format)" href="http://en.wikipedia.org/wiki/ICO_%28icon_image_file_format%29">ICO</a> files, thereby reducing their sizes.</p>
<p><strong>4. TIFF</strong></p>
<p><strong>Tagged Image File Format</strong> (abbreviated <strong>TIFF</strong>) is a file format for storing <a title="Raster graphics" href="http://en.wikipedia.org/wiki/Raster_graphics">images</a>, including <a title="Photograph" href="http://en.wikipedia.org/wiki/Photograph">photographs</a> and <a title="Line art" href="http://en.wikipedia.org/wiki/Line_art">line art</a>. It is now under the control of <a title="Adobe Systems" href="http://en.wikipedia.org/wiki/Adobe_Systems">Adobe Systems</a>. Originally created by the company <a title="Aldus" href="http://en.wikipedia.org/wiki/Aldus">Aldus</a><sup class="reference"><a href="http://en.wikipedia.org/wiki/TIFF#cite_note-0"></a></sup> for use with what was then called &#8220;desktop publishing&#8221;, the TIFF format is widely supported by image-manipulation applications, by publishing and page layout applications, by <a title="Image scanner" href="http://en.wikipedia.org/wiki/Image_scanner">scanning</a>, <a class="mw-redirect" title="FAX" href="http://en.wikipedia.org/wiki/FAX">faxing</a>, <a title="Word processor" href="http://en.wikipedia.org/wiki/Word_processor">word processing</a>, <a title="Optical character recognition" href="http://en.wikipedia.org/wiki/Optical_character_recognition">optical character recognition</a> and other applications<sup class="reference">.<a href="http://en.wikipedia.org/wiki/TIFF#cite_note-1"></a></sup> Adobe Systems, which acquired Aldus, now holds the copyright to the TIFF specification. TIFF has not had a major update since 1992, though several Aldus/Adobe technical notes have been published with minor extensions to the format, and several specifications, including <a title="Tag Image File Format / Electronic Photography" href="http://en.wikipedia.org/wiki/Tag_Image_File_Format_/_Electronic_Photography">TIFF/EP</a>, have been based on the TIFF 6.0 specification.</p>
<p>The phrases &#8220;Tagged Image File Format&#8221; and &#8220;Tag Image File Format&#8221; were used as the subtitle to some early versions of the TIFF specification; the current specification, TIFF 6.0, does not use either subtitle phrase; the name is now, simply, &#8220;TIFF&#8221;.</p>
<p>TIFF was originally created as an attempt to get desktop <a title="Image scanner" href="http://en.wikipedia.org/wiki/Image_scanner">scanner</a> vendors of the mid-1980s to agree on a common scanned image file format, rather than have each company promote its own <a title="Proprietary format" href="http://en.wikipedia.org/wiki/Proprietary_format">proprietary format</a>. In the beginning, TIFF was only a <a title="Binary image" href="http://en.wikipedia.org/wiki/Binary_image">binary image</a> format (only two possible values for each pixel), since that was all that desktop scanners could handle. As scanners became more powerful, and as desktop computer disk space became more plentiful, TIFF grew to accommodate <a title="Grayscale" href="http://en.wikipedia.org/wiki/Grayscale">grayscale</a> images, then color images. Today, TIFF is a popular format for high-color-depth images, along with <a title="JPEG" href="http://en.wikipedia.org/wiki/JPEG">JPEG</a> and <a title="Portable Network Graphics" href="http://en.wikipedia.org/wiki/Portable_Network_Graphics">PNG</a>. Adobe Systems, which acquired the <a title="Adobe PageMaker" href="http://en.wikipedia.org/wiki/Adobe_PageMaker">PageMaker</a> publishing program from Aldus, now controls the TIFF specification.</p>
<p>The TIFF is a flexible, adaptable file format for handling images and data within a single file, by including the header tags (size, definition, image-data arrangement, applied <a title="Image compression" href="http://en.wikipedia.org/wiki/Image_compression">image compression</a>) defining the image&#8217;s geometry. For example, a TIFF can be a container file holding compressed <a title="JPEG" href="http://en.wikipedia.org/wiki/JPEG">JPEG</a> and <a title="Run-length encoding" href="http://en.wikipedia.org/wiki/Run-length_encoding">RLE (run-length encoding)</a> images. A TIFF also can include a <a class="mw-redirect" title="Vector (geometry)" href="http://en.wikipedia.org/wiki/Vector_%28geometry%29">vector</a>-based <a title="Clipping path" href="http://en.wikipedia.org/wiki/Clipping_path">Clipping path</a> (outlines, croppings, image frames). The ability to store image data in a <a title="Lossless data compression" href="http://en.wikipedia.org/wiki/Lossless_data_compression">lossless</a> format makes the TIFF file a useful image archive, because, unlike standard JPEG files, the TIFF using lossless compression (or none) may be edited and re-saved without losing image quality; other TIFF options are layers and pages.</p>
<p>Although the currently accepted standard format, when the TIFF was introduced, its extensibility provoked compatibility problems. Programmers were free to specify new tags and options — but not every implemented program supported every tag created. Resultantly, the TIFF became the lowest common denominator image file. Today, the most TIFF images and readers remain based upon uncompressed 32-bit CMYK or 24-bit RGB images.</p>
<p>The TIFF offers the option of using <a class="mw-redirect" title="LZW" href="http://en.wikipedia.org/wiki/LZW">LZW</a> compression, a lossless data-compression technique for reducing a file&#8217;s size. Until 2004, this option&#8217;s use was limited, because the LZW technique then was under several patents; however, these patents are expired.</p>
<p>Every TIFF begins with a 2-<a title="Byte" href="http://en.wikipedia.org/wiki/Byte">byte</a> indicator of <a class="mw-redirect" title="Byte order" href="http://en.wikipedia.org/wiki/Byte_order">byte order</a>: &#8220;<a title="I" href="http://en.wikipedia.org/wiki/I">II</a>&#8221; for <a class="mw-redirect" title="Little endian" href="http://en.wikipedia.org/wiki/Little_endian">little endian</a> and &#8220;<a title="M" href="http://en.wikipedia.org/wiki/M">MM</a>&#8221; for <a class="mw-redirect" title="Big endian" href="http://en.wikipedia.org/wiki/Big_endian">big endian</a> byte ordering. The next 2 bytes represent the number <a title="42 (number)" href="http://en.wikipedia.org/wiki/42_%28number%29">42</a>, selected &#8220;for its <a class="mw-redirect" title="Answer to Life, the Universe, and Everything" href="http://en.wikipedia.org/wiki/Answer_to_Life,_the_Universe,_and_Everything">deep philosophical significance</a>&#8220;. The 42-reading depends upon the byte order indicated by the 2-byte indicator. All words, double words, etc., in the TIFF file are read based per the indicated byte order. The TIFF 6.0 Specification (Section 7: Additional baseline TIFF Requirements) says that compliant TIFF readers <em>must</em> support both byte orders (II and MM), however, TIFF writers may choose the byte order convenient for their image. The image-processing community&#8217;s joke about the early TIFF&#8217;s standardised-consistency problems is <em>Thousands of Incompatible File Formats</em>.<sup class="reference"><a href="http://en.wikipedia.org/wiki/TIFF#cite_note-trauth-2"></a></sup></p>
<p>The Tiff file format uses 32bit offsets, and as such, each file is limited to 4 gigabytes.</p>
<p>The TIFF format is the standard in <a class="mw-redirect" title="Document imaging" href="http://en.wikipedia.org/wiki/Document_imaging">document imaging</a> and <a class="mw-redirect" title="Document management" href="http://en.wikipedia.org/wiki/Document_management">document management</a> systems using <a title="ITU-T" href="http://en.wikipedia.org/wiki/ITU-T">CCITT</a> Group IV 2D compression, which supports <a title="Black-and-white" href="http://en.wikipedia.org/wiki/Black-and-white">black-and-white</a> (bitonal, <a title="Monochrome" href="http://en.wikipedia.org/wiki/Monochrome">monochrome</a>) images. In high-volume storage scanning, documents are scanned in black and white (not in colour or in grayscale) to conserve storage capacity. An average <a title="ISO 216" href="http://en.wikipedia.org/wiki/ISO_216">A4</a> scanning produces 30 KB of data at 200 <a class="mw-redirect" title="Pixels per inch" href="http://en.wikipedia.org/wiki/Pixels_per_inch">ppi</a> (pixels per inch of resolution) and 50 KB of data at 300 ppi; 300 ppi is more common than 200 ppi.</p>
<p>The TIFF format can save multi-page documents to a single TIFF file rather than a series of files for each scanned page. Multi-page support and 2D compression of bitonal images led to the TIFF&#8217;s becoming the standard storage format for facsimiles, especially on <a title="Fax server" href="http://en.wikipedia.org/wiki/Fax_server">Fax Servers</a>.</p>
<p>The inclusion of the SampleFormat tag in TIFF 6.0 allows TIFF files to handle advanced pixel data types, including integer images with more than 8 bits per channel and floating point images. This tag made TIFF 6.0 a viable format for scientific image processing where extended precision is required. An example is the use of TIFF to store images acquired using scientific CCD cameras that provide up to 16 bits per pixel of intensity resolution.</p>
<p>Storing a sequence of images in a single TIFF file is also possible, and is allowed under TIFF 6.0, provided the rules for multi-page images are followed.</p>
<p>Developers can apply for a block of &#8220;private tags&#8221; to enable them to include their own proprietary information inside a TIFF file without causing problems for file interchange. TIFF readers are required to ignore tags that they do not recognize, and a developer&#8217;s private tags are guaranteed not to clash with anyone else&#8217;s tags or with the standard set of tags defined in the specification.</p>
<p>The TIFF <a title="File format" href="http://en.wikipedia.org/wiki/File_format">file format</a> is unusual in comparison to other image formats, in that it is composed of small descriptor blocks containing offsets into the file which point to the actual pixel image data (composed of bands of pixel rows). This means that incorrect offset values can cause programs to attempt to read erroneous portions of the file or attempt to read past the physical <a class="mw-redirect" title="End of file" href="http://en.wikipedia.org/wiki/End_of_file">end of file</a>. Like most other image file formats, improperly encoded packet or line lengths within the file can cause poorly written rendering programs to <a title="Buffer overflow" href="http://en.wikipedia.org/wiki/Buffer_overflow">overflow their internal buffers</a>. Properly-written image rendering programs generally avoid such pitfalls.</p>
<p>Multiple <a title="Buffer overflow" href="http://en.wikipedia.org/wiki/Buffer_overflow">buffer overflows</a> have been found in <a title="Libtiff" href="http://en.wikipedia.org/wiki/Libtiff">Libtiff</a>.<sup class="reference"><a href="http://en.wikipedia.org/wiki/TIFF#cite_note-3"></a></sup><sup class="reference"><a href="http://en.wikipedia.org/wiki/TIFF#cite_note-4"></a></sup><sup class="reference"><a href="http://en.wikipedia.org/wiki/TIFF#cite_note-5"></a></sup> Some of these have also been used to execute <a title="Unsigned code" href="http://en.wikipedia.org/wiki/Unsigned_code">unsigned code</a> on the <a class="mw-redirect" title="Psp homebrew" href="http://en.wikipedia.org/wiki/Psp_homebrew">PlayStation Portable</a>,<sup class="reference"><a href="http://en.wikipedia.org/wiki/TIFF#cite_note-6"></a></sup> as well as run third party applications on the iPhone and iPod Touch.<sup class="noprint Template-Fact"><span style="white-space:nowrap;" title="This claim needs references to reliable sources since August 2008">[<em><a title="Citation needed" href="http://en.wikipedia.org/wiki/Wikipedia:Citation_needed">citation needed</a></em>]</span></sup></p>
<p><span style="white-space:nowrap;" title="This claim needs references to reliable sources since August 2008"><strong>5. BMP</strong></span></p>
<p>The <strong>BMP file format</strong>, sometimes called <strong>bitmap</strong> or <strong>DIB file format</strong> (for <em>device-independent bitmap</em>), is an <a class="mw-redirect" title="Image file format" href="http://en.wikipedia.org/wiki/Image_file_format">image file format</a> used to store <a title="Bitmap" href="http://en.wikipedia.org/wiki/Bitmap">bitmap</a> <a title="Digital image" href="http://en.wikipedia.org/wiki/Digital_image">digital images</a>, especially on <a title="Microsoft Windows" href="http://en.wikipedia.org/wiki/Microsoft_Windows">Microsoft Windows</a> and <a title="OS/2" href="http://en.wikipedia.org/wiki/OS/2">OS/2</a> operating systems.</p>
<p>Many <a title="Graphical user interface" href="http://en.wikipedia.org/wiki/Graphical_user_interface">graphical user interfaces</a> use bitmaps in their built-in graphics subsystems;<sup class="reference"><a href="http://en.wikipedia.org/wiki/BMP_file_format#cite_note-0"></a></sup> for example, the Microsoft Windows and OS/2 platforms&#8217; <a title="Graphics Device Interface" href="http://en.wikipedia.org/wiki/Graphics_Device_Interface">GDI</a> subsystem, where the specific format used is the <em>Windows and OS/2 bitmap file format</em>, usually named with the <a class="mw-redirect" title="File extension" href="http://en.wikipedia.org/wiki/File_extension">file extension</a> of <code>.BMP</code> or <code>.DIB</code>.</p>
<p>In uncompressed BMP files, and many other <a title="Bitmap" href="http://en.wikipedia.org/wiki/Bitmap">bitmap</a> file formats, image <a title="Pixel" href="http://en.wikipedia.org/wiki/Pixel">pixels</a> are stored with a <a title="Color depth" href="http://en.wikipedia.org/wiki/Color_depth">color depth</a> of 1, 4, 8, 16, 24, or 32 bits per pixel. Images of 8 bits and fewer can be either <a title="Grayscale" href="http://en.wikipedia.org/wiki/Grayscale">grayscale</a> or <a title="Indexed color" href="http://en.wikipedia.org/wiki/Indexed_color">indexed color</a>. An <a class="mw-redirect" title="Alpha channel" href="http://en.wikipedia.org/wiki/Alpha_channel">alpha channel</a> (for <a title="Transparency (graphic)" href="http://en.wikipedia.org/wiki/Transparency_%28graphic%29">transparency</a>) may be stored in a separate file, where it is similar to a grayscale image, or in a fourth channel that converts 24-bit images to 32 bits per pixel.</p>
<p><a title="Image compression" href="http://en.wikipedia.org/wiki/Image_compression">Uncompressed</a> bitmap files (such as BMP) are typically much larger than compressed (with any of various methods) image file formats for the same image. For example, the 1058×1058 <a title="Wikipedia-logo.png" href="http://en.wikipedia.org/wiki/File:Wikipedia-logo.png">Wikipedia logo</a>, which occupies about 287.65 <a title="Kilobyte" href="http://en.wikipedia.org/wiki/Kilobyte">KB</a> in the <a title="Portable Network Graphics" href="http://en.wikipedia.org/wiki/Portable_Network_Graphics">PNG</a> format, takes about 3358 <a title="Kilobyte" href="http://en.wikipedia.org/wiki/Kilobyte">KB</a> as a 24-bit BMP file. Uncompressed formats are generally unsuitable for transferring images on the <a title="Internet" href="http://en.wikipedia.org/wiki/Internet">Internet</a> or other slow or capacity-limited <a title="Digital media" href="http://en.wikipedia.org/wiki/Digital_media">media</a>.</p>
<p>The bits representing the bitmap pixels are <a class="mw-redirect" title="Packed" href="http://en.wikipedia.org/wiki/Packed">packed</a> within rows. Depending on the color depth, a pixel in the picture will occupy at least <strong><em>n</em>/8</strong> bytes (<em>n</em> is the bit depth, since 1 byte equals 8 bits). The approximate size for a n-bit (2<sup><em>n</em></sup> colors) BMP file in <a title="Byte" href="http://en.wikipedia.org/wiki/Byte">bytes</a> can be calculated, including the effect of starting each word on a 32-bit <a class="mw-redirect" title="Dword" href="http://en.wikipedia.org/wiki/Dword">dword</a> boundary, as:</p>
<dl>
<dd><img class="tex" src="http://upload.wikimedia.org/math/e/9/4/e942bbe91f4fb5f97d55f375e61e52c2.png" alt="\mbox{rowsize} = 4 \cdot \Big\lfloor\frac {(n \cdot \mbox{width}) + 31}{32}\Big\rfloor" />, where the floor function gives the highest integer that is less than or equal to the argument; that is, the number of 32-bit dwords needed to hold a row of <em>n</em>-bit pixels; this value multiplied by 4 gives the byte count.</dd>
</dl>
<dl>
<dd><img class="tex" src="http://upload.wikimedia.org/math/e/5/4/e54878375031e96d8fbd2a5eb3b761c5.png" alt="\mbox{filesize} \approx 54 + 4 \cdot 2^n + \mbox{rowsize} \cdot \mbox{height}" />, where <em>height</em> and <em>width</em> are given in <a class="mw-redirect" title="Pixels" href="http://en.wikipedia.org/wiki/Pixels">pixels</a>.</dd>
</dl>
<p>In the formula above, <strong>54</strong> is the size of the <a class="mw-redirect" title="Header (information technology)" href="http://en.wikipedia.org/wiki/Header_%28information_technology%29">headers</a> in the popular Windows V3 BMP version (14-byte BMP file header plus 40-byte DIB V3 header); some other header versions will be larger or smaller than that, as described in tables below. And <img class="tex" src="http://upload.wikimedia.org/math/c/c/0/cc02d9602bc019ca809aa56daf2e7ba5.png" alt="4 \cdot 2^n" /> is the size of the color <a title="Palette (computing)" href="http://en.wikipedia.org/wiki/Palette_%28computing%29">palette</a>; this size is an approximation, as the color palette size will be <img class="tex" src="http://upload.wikimedia.org/math/5/c/f/5cf84ffff352bfee47d447957b4edea9.png" alt="3 \cdot 2^n" /> bytes in the OS/2 V1 version, and some other versions may optionally define only the number of colors needed by the image, potentially fewer than <span class="texhtml">2<sup><em>n</em></sup></span>.<sup class="reference"><a href="http://en.wikipedia.org/wiki/BMP_file_format#cite_note-DIBhelp-1"></a></sup> Only files with 8 or fewer bits per pixel use a palette; for 16-bit (or higher) bitmaps, omit the palette part from the size calculation:</p>
<dl>
<dd><img class="tex" src="http://upload.wikimedia.org/math/8/b/f/8bf669b672d576b8904baa75de8e56a2.png" alt="\mbox{filesize} \approx 54 + \mbox{rowsize} \cdot \mbox{height} " /></dd>
</dl>
<p>For detailed information, see the sections on file format below.</p>
<p>Microsoft has defined a particular representation of color bitmaps of different color depths, as an aid to exchanging bitmaps between devices and applications with a variety of internal representations. They called these device-independent bitmaps or DIBs, and the file format for them is called DIB file format or BMP file format. According to Microsoft support:<sup class="reference"><a href="http://en.wikipedia.org/wiki/BMP_file_format#cite_note-DIBhelp-1"></a></sup></p>
<p>Since BMP/DIB format was created for the <a class="mw-redirect" title="Intel" href="http://en.wikipedia.org/wiki/Intel">Intel</a> <a title="X86 architecture" href="http://en.wikipedia.org/wiki/X86_architecture">X86 architecture</a>, all integers are stored in <a title="Little-endian" href="http://en.wikipedia.org/wiki/Little-endian">little-endian</a> format.</p>
<blockquote><p>A device-independent bitmap (DIB) is a format used to define device-independent bitmaps in various color resolutions. The main purpose of DIBs is to allow bitmaps to be moved from one device to another (hence, the device-independent part of the name). A DIB is an external format, in contrast to a device-dependent bitmap, which appears in the system as a bitmap object (created by an application&#8230;). A DIB is normally transported in metafiles (usually using the StretchDIBits() function), BMP files, and the Clipboard (CF_DIB data format).</p></blockquote>
<p>A typical BMP file usually contains the following blocks of data:</p>
<p>The following sections discuss the data stored in the BMP file or DIB in details. This is the standard BMP file format.<sup class="reference"><a href="http://en.wikipedia.org/wiki/BMP_file_format#cite_note-DIBhelp-1"></a></sup> Some bitmap images may be stored using a slightly different format, depending on the application that creates it. Also, not all fields are used; a value of 0 will be found in these unused fields.</p>
<p>A BMP file is loaded into memory as a DIB data structure, an important component of the Windows GDI API. The DIB data structure is the same as the BMP file format, but without the 14-byte BMP header.</p>
<p>This block of bytes is at the start of the file and is used to identify the file. A typical application reads this block first to ensure that the file is actually a BMP file and that it is not damaged. Note that the first two bytes of the BMP file format (thus the BMP header) are stored in big-endian order. This is the magic number &#8216;BM&#8217;. All of the other integer values are stored in little-endian format (i.e. least-significant byte first).</p>
<p>This block of bytes tells the application detailed information about the image, which will be used to display the image on the screen. The block also matches the header used internally by Windows and OS/2 and has several different variants. All of them contain a <a class="mw-redirect" title="Dword (Computer)" href="http://en.wikipedia.org/wiki/Dword_%28Computer%29">dword</a> field, specifying their size, so that an application can easily determine which header is used in the image. The reason that there are different headers is that Microsoft extended the DIB format several times. The new extended headers can be used with some GDI functions instead of the older ones, providing more functionality. Since the GDI supports a function for loading bitmap files, typical Windows applications use that functionality. One consequence of this is that for such applications, the BMP formats that they support match the formats supported by the Windows version being run. See the table below for more information.</p>
<p>For compatibility reasons, most applications use the older DIB headers for saving files. With OS/2 being obsolete, for now the only common format is the V3 header. See next table for its description. All values are stored as <a title="Signedness" href="http://en.wikipedia.org/wiki/Signedness">unsigned integers</a>, unless explicitly noted.</p>
<p>A 32-bit version of DIB with integrated alpha channel has been introduced with <a title="Windows XP" href="http://en.wikipedia.org/wiki/Windows_XP">Windows XP</a> and is used within its logon and theme system; it has yet to gain wide support in <a title="Image editing" href="http://en.wikipedia.org/wiki/Image_editing">image editing</a> software, but has been supported in <a title="Adobe Photoshop" href="http://en.wikipedia.org/wiki/Adobe_Photoshop">Adobe Photoshop</a> since version 7 and <a title="Adobe Flash" href="http://en.wikipedia.org/wiki/Adobe_Flash">Adobe Flash</a> since version MX 2004 (then known as Macromedia Flash).</p>
<p>The palette occurs in the BMP file directly after the BMP header and the DIB header. Therefore, its offset is the size of the BMP header plus the size of the DIB header.</p>
<p>The palette is a block of bytes (a table) listing the colors available for use in a particular indexed-color image. Each pixel in the image is described by a number of bits (1, 4, or <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> which index a single color in this table. The purpose of the color palette in indexed-color bitmaps is to tell the application the actual color that each of these index values corresponds to.</p>
<p>A DIB always uses the <a class="mw-redirect" title="RGB" href="http://en.wikipedia.org/wiki/RGB">RGB</a> color model. In this model, a color is terms of different intensities (from 0 to 255) of the additive <a title="Primary color" href="http://en.wikipedia.org/wiki/Primary_color">primary colors</a> red (R), green (G), and blue (B). A color is thus defined using the 3 values for R, G and B (though stored in backwards order in each palette entry).</p>
<p>The number of entries in the palette is either 2<sup><em>n</em></sup> or a smaller number specified in the header (in the OS/2 V1 format, only the full-size palette is supported).<sup class="reference"><a href="http://en.wikipedia.org/wiki/BMP_file_format#cite_note-DIBhelp-1"></a></sup><sup class="reference"><a href="http://en.wikipedia.org/wiki/BMP_file_format#cite_note-OS2gff-3"></a></sup> Each entry contains four bytes, except in the case of the OS/2 V1 versions, in which case there are only three bytes per entry.<sup class="reference"><a href="http://en.wikipedia.org/wiki/BMP_file_format#cite_note-OS2gff-3"></a></sup> The first (and only for OS/2 V1) three bytes store the values for blue, green, and red, respectively,<sup class="reference"><a href="http://en.wikipedia.org/wiki/BMP_file_format#cite_note-DIBhelp-1"></a></sup> while the last one is unused and is filled with 0 by most applications.</p>
<p>As mentioned above, the color palette is not used when the bitmap is 16-bit or higher; there are no palette bytes in those BMP files.</p>
<p>This block of bytes describes the image, pixel by pixel. Pixels are stored &#8220;upside-down&#8221; with respect to normal image <a title="Raster scan" href="http://en.wikipedia.org/wiki/Raster_scan">raster scan</a> order, starting in the lower left corner, going from left to right, and then row by row from the bottom to the top of the image.<sup class="reference"><a href="http://en.wikipedia.org/wiki/BMP_file_format#cite_note-DIBhelp-1"></a></sup> Uncompressed Windows bitmaps can also be stored from the top row to the bottom, if the image height value is negative.</p>
<p>In the original DIB, the only four legal numbers of bits per pixel are 1, 4, 8, and 24.<sup class="reference"><a href="http://en.wikipedia.org/wiki/BMP_file_format#cite_note-DIBhelp-1"></a></sup> In all cases, each row of pixels is extended to a 32-bit (4-byte) boundary, filling with an unspecified value (not necessarily 0) so that the next row will start on a multiple-of-four byte location in memory or in the file.<sup class="reference"><a href="http://en.wikipedia.org/wiki/BMP_file_format#cite_note-DIBhelp-1"></a></sup> The total number of bytes in a row can be calculated as the <em>image size/bitmap height in pixels.</em> Following these rules there are several ways to store the pixel data depending on the color depth and the compression type of the bitmap.</p>
<p>One-bit (two-color, for example, black and white) pixel values are stored in each bit, with the first (left-most) pixel in the most-significant bit of the first byte.<sup class="reference"><a href="http://en.wikipedia.org/wiki/BMP_file_format#cite_note-DIBhelp-1"></a></sup> An unset bit will refer to the first color table entry, and a set bit will refer to the last (second) table entry.</p>
<p>Four-bit color (16 colors) is stored with two pixels per byte, the left-most pixel being in the more significant <a title="Nibble" href="http://en.wikipedia.org/wiki/Nibble">nibble</a>.<sup class="reference"><a href="http://en.wikipedia.org/wiki/BMP_file_format#cite_note-DIBhelp-1"></a></sup> Each pixel value is an index into a table of up to 16 colors.</p>
<p>Eight-bit color (256 colors) is stored one pixel value per byte. Each byte is an index into a table of up to 256 colors.</p>
<p>RGB color (24-bit) pixel values are stored with bytes in the same order (blue, green, red) as in the color table.<sup class="reference"><a href="http://en.wikipedia.org/wiki/BMP_file_format#cite_note-DIBhelp-1"></a></sup></p>
<p>The simplicity of the BMP file format, and its widespread familiarity in Windows and elsewhere, as well as the fact that this format is relatively well <a title="Documentation" href="http://en.wikipedia.org/wiki/Documentation">documented</a> and free of <a title="Patent" href="http://en.wikipedia.org/wiki/Patent">patents</a>, makes it a very common format that image processing programs from many operating systems can read and write.</p>
<p>While most BMP files have a relatively large file size due to lack of any compression, many BMP files can be considerably compressed with <a title="Lossless data compression" href="http://en.wikipedia.org/wiki/Lossless_data_compression">lossless data compression</a> algorithms such as <a title="ZIP (file format)" href="http://en.wikipedia.org/wiki/ZIP_%28file_format%29">ZIP</a> (up to 0.1% of original size) because they contain redundant data.</p>
<p>The <a title="X Window System" href="http://en.wikipedia.org/wiki/X_Window_System">X Window System</a> uses a similar <a class="mw-redirect" title="X Bitmap" href="http://en.wikipedia.org/wiki/X_Bitmap">XBM</a> format for <a title="Black-and-white" href="http://en.wikipedia.org/wiki/Black-and-white">black-and-white</a> images, and <a title="X PixMap" href="http://en.wikipedia.org/wiki/X_PixMap">XPM</a> (<em>pixelmap</em>) for <a title="Color" href="http://en.wikipedia.org/wiki/Color">color</a> images. There are also a variety of &#8220;raw&#8221; formats, which saves raw <a title="Data" href="http://en.wikipedia.org/wiki/Data">data</a> with no other <a title="Information" href="http://en.wikipedia.org/wiki/Information">information</a>. The <a class="mw-redirect" title="Portable Pixmap" href="http://en.wikipedia.org/wiki/Portable_Pixmap">Portable Pixmap</a> (PPM) and <a title="Truevision TGA" href="http://en.wikipedia.org/wiki/Truevision_TGA">Truevision TGA</a> formats also exist, but are less often used – or only for special purposes; for example, TGA can contain transparency information.</p>
<p>Numerous other bitmap file formats are in use, though most not widely.<sup class="reference"><a href="http://en.wikipedia.org/wiki/BMP_file_format#cite_note-4"></a></sup></p>
<p><strong>6. ADOBE ILLUSTRATOR ARTWORK</strong></p>
<p><strong>Adobe Illustrator Artwork</strong> (<strong>AI</strong>) is a <a title="Proprietary software" href="http://en.wikipedia.org/wiki/Proprietary_software">proprietary</a> <a title="File format" href="http://en.wikipedia.org/wiki/File_format">file format</a> developed by <a title="Adobe Systems" href="http://en.wikipedia.org/wiki/Adobe_Systems">Adobe Systems</a> for representing single-page <a title="Vector graphics" href="http://en.wikipedia.org/wiki/Vector_graphics">vector-based drawings</a> in either the <a title="Encapsulated PostScript" href="http://en.wikipedia.org/wiki/Encapsulated_PostScript">EPS</a> or <a class="mw-redirect" title="PDF" href="http://en.wikipedia.org/wiki/PDF">PDF</a> formats. The <strong>.ai</strong> <a title="Filename extension" href="http://en.wikipedia.org/wiki/Filename_extension">filename extension</a> is used by <a title="Adobe Illustrator" href="http://en.wikipedia.org/wiki/Adobe_Illustrator">Adobe Illustrator</a>.</p>
<p>Early versions of the AI file format are true <a title="Encapsulated PostScript" href="http://en.wikipedia.org/wiki/Encapsulated_PostScript">EPS</a> files with a restricted, compact syntax, with additional semantics represented by Illustrator-specific <a title="Document Structuring Conventions" href="http://en.wikipedia.org/wiki/Document_Structuring_Conventions">DSC comments</a> that conform to DSC&#8217;s Open Structuring Conventions. These files are identical to their corresponding Illustrator EPS counterparts, but with the EPS procsets (<a title="Library (computing)" href="http://en.wikipedia.org/wiki/Library_%28computing%29">procedure sets</a>) omitted from the file and instead externally referenced using %%Include <a title="Directive" href="http://en.wikipedia.org/wiki/Directive">directives</a>.</p>
<p>Recent versions of the AI file format, including the PDF-based formats and recent EPS formats, are based on a native format called <a class="mw-redirect" title="Progressive Graphics Format" href="http://en.wikipedia.org/wiki/Progressive_Graphics_Format">PGF</a> that is unrelated to both EPS and PDF. PDF compatibility is achieved not by extending the PDF format, but by embedding a complete copy of the native PGF data within the PDF file. The same kind of “dual path” approach is also used when recent versions of Illustrator are saving EPS-compatible files.</p>
<p>Adobe Illustrator is not the only program that can edit .ai files. Both <a title="Inkscape" href="http://en.wikipedia.org/wiki/Inkscape">Inkscape</a> (a GPL licensed program) and <a title="CorelDRAW" href="http://en.wikipedia.org/wiki/CorelDRAW">CorelDRAW</a> (another Proprietary program) can natively edit this file format.</p>
<p><strong>7. AutoCAD DXF</strong></p>
<p><strong>AutoCAD DXF</strong> (Drawing Interchange Format, or Drawing Exchange Format) is a <a title="Computer-aided design" href="http://en.wikipedia.org/wiki/Computer-aided_design">CAD</a> data <a title="File format" href="http://en.wikipedia.org/wiki/File_format">file format</a> developed by <a title="Autodesk" href="http://en.wikipedia.org/wiki/Autodesk">Autodesk</a><sup class="noprint Template-Fact"><span style="white-space:nowrap;" title="This claim needs references to reliable sources since September 2008">[<em><a title="Citation needed" href="http://en.wikipedia.org/wiki/Wikipedia:Citation_needed">citation needed</a></em>]</span></sup> for enabling <a title="CAD data exchange" href="http://en.wikipedia.org/wiki/CAD_data_exchange">data interoperability</a> between <a title="AutoCAD" href="http://en.wikipedia.org/wiki/AutoCAD">AutoCAD</a> and other programs.</p>
<p>DXF was originally introduced in December 1982 as part of AutoCAD 1.0, and was intended to provide an exact representation of the data in the AutoCAD native file format, <a title=".dwg" href="http://en.wikipedia.org/wiki/.dwg">DWG</a> (Drawing), for which Autodesk for many years did not publish specifications. Because of this, correct imports of DXF files have been difficult. Autodesk now publishes the <cite class="Journal"><em><a class="external text" title="http://usa.autodesk.com/adsk/servlet/item?siteID=123112&amp;id=8446698" rel="nofollow" href="http://usa.autodesk.com/adsk/servlet/item?siteID=123112&amp;id=8446698">DXF specifications</a></em><span class="printonly">, <a class="external free" title="http://usa.autodesk.com/adsk/servlet/item?siteID=123112&amp;id=8446698" rel="nofollow" href="http://usa.autodesk.com/adsk/servlet/item?siteID=123112&amp;id=8446698">http://usa.autodesk.com/adsk/servlet/item?siteID=123112&amp;id=8446698</a></span></cite><span class="Z3988" title="AutoCAD_DXF"><span style="display:none;"> </span></span> on its website for versions of DXF dating from AutoCAD Release 13 to AutoCAD 2009.</p>
<p>Versions of AutoCAD from Release 10 (October 1988) and up support both <a title="ASCII" href="http://en.wikipedia.org/wiki/ASCII">ASCII</a> and <a title="Binary file" href="http://en.wikipedia.org/wiki/Binary_file">binary</a> forms of DXF. Earlier versions support only ASCII.</p>
<p>As AutoCAD has become more powerful, supporting more complex object types, DXF has become less useful. Certain object types, including <a title="ACIS" href="http://en.wikipedia.org/wiki/ACIS">ACIS</a> solids and regions, are not documented. Other object types, including AutoCAD 2006&#8217;s dynamic blocks, and all of the objects specific to the vertical-market versions of AutoCAD, are partially documented, but not well enough to allow other developers to support them. For these reasons many CAD applications use the <a title=".dwg" href="http://en.wikipedia.org/wiki/.dwg">DWG</a> format which can be licensed from <a class="mw-redirect" title="AutoDesk" href="http://en.wikipedia.org/wiki/AutoDesk">AutoDesk</a> or non-natively from the <a title="Open Design Alliance" href="http://en.wikipedia.org/wiki/Open_Design_Alliance">Open Design Alliance</a>.</p>
<p>ASCII versions of DXF can be read with a text-editor. The basic organization of a DXF file is as follows:</p>
<ul>
<li><strong>HEADER</strong> section – General information about the drawing. Each parameter has a variable name and an associated value.</li>
<li><strong>CLASSES</strong> section – Holds the information for application-defined classes whose instances appear in the BLOCKS, ENTITIES, and OBJECTS sections of the database. Generally does not provide sufficient information to allow interoperability with other programs.</li>
<li><strong>TABLES</strong> section – This section contains definitions of named items.</li>
</ul>
<dl>
<dd>Application ID (APPID) table</dd>
<dd>Block Recod (BLOCK_RECORD) table</dd>
<dd>Dimension Style (DIMSTYPE) table</dd>
<dd>Layer (LAYER) table</dd>
<dd>Linetype (LTYPE) table</dd>
<dd>Text style (STYLE) table</dd>
<dd>User Coordinate System (UCS) table</dd>
<dd>View (VIEW) table</dd>
<dd>Viewport configuration (VPORT) table</dd>
</dl>
<ul>
<li><strong>BLOCKS</strong> section – This section contains Block Definition entities describing the entities comprising each Block in the drawing.</li>
<li><strong>ENTITIES</strong> section – This section contains the drawing entities, including any Block References.</li>
<li><strong>OBJECTS</strong> section – Contains the data that apply to nongraphical objects, used by AutoLISP and ObjectARX applications.</li>
<li><strong>THUMBNAILIMAGE</strong> section – Contains the preview image for the DXF file.</li>
<li><strong>END OF FILE</strong></li>
</ul>
<p><strong>8. CGM</strong></p>
<p><strong>Computer Graphics Metafile</strong> (<strong>CGM</strong>) is a <a title="Free file format" href="http://en.wikipedia.org/wiki/Free_file_format">free</a> and <a title="Open standard" href="http://en.wikipedia.org/wiki/Open_standard">open</a> <a title="International standard" href="http://en.wikipedia.org/wiki/International_standard">international standard</a> file format for 2D <a title="Vector graphics" href="http://en.wikipedia.org/wiki/Vector_graphics">vector graphics</a>, <a title="Raster graphics" href="http://en.wikipedia.org/wiki/Raster_graphics">raster graphics</a>, and <a class="mw-redirect" title="Character (computer)" href="http://en.wikipedia.org/wiki/Character_%28computer%29">text</a>, and is defined by <strong><a title="International Organization for Standardization" href="http://en.wikipedia.org/wiki/International_Organization_for_Standardization">ISO</a>/<a title="International Electrotechnical Commission" href="http://en.wikipedia.org/wiki/International_Electrotechnical_Commission">IEC</a> 8632</strong>.<sup class="reference"><a href="http://en.wikipedia.org/wiki/Computer_Graphics_Metafile#cite_note-1"></a></sup></p>
<p>All <a title="Computer graphics" href="http://en.wikipedia.org/wiki/Computer_graphics">graphical</a> elements can be specified in a textual <a class="mw-redirect" title="Source file" href="http://en.wikipedia.org/wiki/Source_file">source file</a> that can be compiled into a <a title="Binary file" href="http://en.wikipedia.org/wiki/Binary_file">binary file</a> or one of two text representations. CGM provides a means of graphics data interchange for computer representation of 2D graphical information independent from any particular application, system, platform, or device. As a <a title="Metafile" href="http://en.wikipedia.org/wiki/Metafile">metafile</a>, i.e. a file containing information that describes or specifies another file, the CGM format has numerous elements to provide functions and to represent entities, so that a wide range of graphical information and geometric primitives can be accommodated. Rather than establish an explicit <a title="Graphics file format" href="http://en.wikipedia.org/wiki/Graphics_file_format">graphics file format</a>, CGM contains the instructions and data for reconstructing graphical components to render an image using an object-oriented approach.</p>
<p>Although CGM is not widely supported for web pages and has been supplanted by other formats in the graphic arts, it is still prevalent in engineering, aviation, and other technical applications.</p>
<p>The initial CGM implementation was effectively a streamed representation of a sequence of <a title="Graphical Kernel System" href="http://en.wikipedia.org/wiki/Graphical_Kernel_System">Graphical Kernel System</a> primitive operations. It has been adopted to some extent in the areas of <a title="Engineering drawing" href="http://en.wikipedia.org/wiki/Engineering_drawing">technical illustration</a> and professional <a title="Industrial design" href="http://en.wikipedia.org/wiki/Industrial_design">design</a>, but has largely been superseded by formats such as <a title="Scalable Vector Graphics" href="http://en.wikipedia.org/wiki/Scalable_Vector_Graphics">SVG</a> and <a title="AutoCAD DXF" href="http://en.wikipedia.org/wiki/AutoCAD_DXF">DXF</a>.</p>
<p>The <a title="World Wide Web Consortium" href="http://en.wikipedia.org/wiki/World_Wide_Web_Consortium">World Wide Web Consortium</a> has developed <strong>WebCGM</strong>, a profile of CGM intended for the use of CGM on the Web.</p>
<ul>
<li>1986 – ANSI X3 122-1986 (<a title="American National Standards Institute" href="http://en.wikipedia.org/wiki/American_National_Standards_Institute">ANSI</a> X3 committee)</li>
<li>1987 – ISO 8632-1987 (<a title="International Organization for Standardization" href="http://en.wikipedia.org/wiki/International_Organization_for_Standardization">ISO</a>)</li>
<li>1991 – ANSI/ISO 8632-1987 (ANSI and ISO)</li>
<li>1992 – ISO 8632:1992, a.k.a CGM:1992 (ISO)</li>
<li>1999 – ISO/IEC 8632:1999, 2<sup>nd</sup> Edition (ISO/IEC <a title="ISO/IEC JTC1" href="http://en.wikipedia.org/wiki/ISO/IEC_JTC1">JTC1/SC24</a>)</li>
<li>December 17, 2001 – WebCGM (<a title="World Wide Web Consortium" href="http://en.wikipedia.org/wiki/World_Wide_Web_Consortium">W3C</a>)</li>
<li>January 30, 2007 – WebCGM 2.0 (W3C)</li>
</ul>
<ul>
<li>Arnold, D.B. and P.R. Bono, CGM and CGI: Metafile and Interface Standards for Computer Graphics, Springer-Verlag, New York, NY, 1988.</li>
<li>Henderson, L.R., and Gebhardt, &#8220;CGM: SGML for Graphics,&#8221; The Gilbane Report, Fall 1994.</li>
<li>Henderson, L.R., and A.M. Mumford, The CGM Handbook, Academic Press, San Diego, CA, 1993.</li>
<li>Bono, P.R. , J.L. Encarnacao, L.M. Encarnacao, and W.R. Herzner, PC Graphics With GKS, Prentice-Hall, Englewood Cliffs, NJ, 1990.</li>
</ul>
<p><strong>9. MIF</strong></p>
<p><strong>Maker Interchange Format</strong> (<strong>MIF</strong>) is a proprietary <a title="Markup language" href="http://en.wikipedia.org/wiki/Markup_language">markup language</a> associated with <a title="Adobe Systems" href="http://en.wikipedia.org/wiki/Adobe_Systems">Adobe Systems</a>&#8216; <a class="mw-redirect" title="FrameMaker" href="http://en.wikipedia.org/wiki/FrameMaker">FrameMaker</a> product for technical document preparation.</p>
<p>While MIF is essentially specific to a single program (FrameMaker), it was widely used in the complex document workflows of small enterprises, especially in the industrial and manufacturing sector.</p>
<p><strong>10. SVG</strong></p>
<p><strong>Scalable Vector Graphics</strong> (<strong>SVG</strong>) is an <a title="XML" href="http://en.wikipedia.org/wiki/XML">XML</a> specification and <a title="File format" href="http://en.wikipedia.org/wiki/File_format">file format</a> for describing two-dimensional <a title="Vector graphics" href="http://en.wikipedia.org/wiki/Vector_graphics">vector graphics</a>, both static and dynamic (interactive or <a class="mw-redirect" title="Animated" href="http://en.wikipedia.org/wiki/Animated">animated</a>).</p>
<p>The SVG specification is an <a title="Open standard" href="http://en.wikipedia.org/wiki/Open_standard">open standard</a> that has been under development by the <a title="World Wide Web Consortium" href="http://en.wikipedia.org/wiki/World_Wide_Web_Consortium">World Wide Web Consortium</a> (W3C) since 1999. SVG images and their behaviours are defined in XML text files. This means that they can be searched, indexed, <a title="Scripting language" href="http://en.wikipedia.org/wiki/Scripting_language">scripted</a> and, if required, compressed. SVG files can be edited with any <a title="Text editor" href="http://en.wikipedia.org/wiki/Text_editor">text editor</a>, but specialist SVG development environments are also available. These offer a wide range of specialised and general-purpose features.</p>
<p>All modern <a title="Web browser" href="http://en.wikipedia.org/wiki/Web_browser">web browsers</a> except Microsoft <a title="Internet Explorer" href="http://en.wikipedia.org/wiki/Internet_Explorer">Internet Explorer</a> support and render SVG markup directly<sup class="reference"><a href="http://en.wikipedia.org/wiki/SVG#cite_note-1"></a></sup>. To view SVG files in Internet Explorer (IE), users have to download and install a <a class="mw-redirect" title="Browser plugin" href="http://en.wikipedia.org/wiki/Browser_plugin">browser plugin</a>.</p>
<p>Since 2001, SVG has progressed from version 1.0 to 1.2 and has been modularised to allow various <em>profiles</em> to be published, including SVG Print, SVG Basic and SVG Tiny. Being an efficient, widely understood and flexible image format, SVG is also well-suited to <a title="Smartphone" href="http://en.wikipedia.org/wiki/Smartphone">small</a> and <a title="Mobile device" href="http://en.wikipedia.org/wiki/Mobile_device">mobile devices</a>. The SVG Basic and SVG Tiny specifications were developed with just such uses in mind and many current mobile devices support them.</p>
<p><strong>SVG</strong> has been in development since 1999 by a group of companies within the <a class="mw-redirect" title="W3C" href="http://en.wikipedia.org/wiki/W3C">W3C</a> after the competing standards <a class="mw-redirect" title="PGML" href="http://en.wikipedia.org/wiki/PGML">PGML</a> (developed from Adobe&#8217;s <a title="PostScript" href="http://en.wikipedia.org/wiki/PostScript">PostScript</a>) and <a title="Vector Markup Language" href="http://en.wikipedia.org/wiki/Vector_Markup_Language">VML</a> (developed from Microsoft&#8217;s <a title="Rich Text Format" href="http://en.wikipedia.org/wiki/Rich_Text_Format">RTF</a>) were submitted to W3C in 1998. SVG drew on experience designing both those formats.</p>
<p>SVG allows three types of graphic objects:</p>
<ul>
<li><a title="Vector graphics" href="http://en.wikipedia.org/wiki/Vector_graphics">Vector graphics</a></li>
<li><a title="Raster graphics" href="http://en.wikipedia.org/wiki/Raster_graphics">Raster graphics</a></li>
<li>Text</li>
</ul>
<p>Graphical objects can be grouped, styled, transformed, and composited into previously <a title="Rendering (computer graphics)" href="http://en.wikipedia.org/wiki/Rendering_%28computer_graphics%29">rendered</a> objects. SVG does not directly support z-indices<sup class="reference"><a href="http://en.wikipedia.org/wiki/SVG#cite_note-2"></a></sup> that separate drawing order from document order for objects, which is different than in other vector markup languages like <a class="mw-redirect" title="VML" href="http://en.wikipedia.org/wiki/VML">VML</a>. Text can be in any <a title="XML namespace" href="http://en.wikipedia.org/wiki/XML_namespace">XML namespace</a> suitable to the application, which enhances searchability and <a title="Accessibility" href="http://en.wikipedia.org/wiki/Accessibility">accessibility</a> of the SVG graphics. The feature set includes nested <a title="Transformation (geometry)" href="http://en.wikipedia.org/wiki/Transformation_%28geometry%29">transformations</a>, <a title="Clipping path" href="http://en.wikipedia.org/wiki/Clipping_path">clipping paths</a>, <a title="Alpha compositing" href="http://en.wikipedia.org/wiki/Alpha_compositing">alpha masks</a>, <a class="mw-redirect" title="SVG filter effect" href="http://en.wikipedia.org/wiki/SVG_filter_effect">filter effects</a>, template objects and <a title="Extensibility" href="http://en.wikipedia.org/wiki/Extensibility">extensibility</a>.</p>
<p>While being primarily designated as a <a title="Vector graphics markup language" href="http://en.wikipedia.org/wiki/Vector_graphics_markup_language">vector graphics markup language</a>, the specification is also designed with the basic capabilities of a <a title="Page description language" href="http://en.wikipedia.org/wiki/Page_description_language">page description language</a>, like <a title="Adobe Systems" href="http://en.wikipedia.org/wiki/Adobe_Systems">Adobe&#8217;s</a> <a title="Portable Document Format" href="http://en.wikipedia.org/wiki/Portable_Document_Format">PDF</a>. It contains provisions for <a class="new" title="Rich graphics (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=Rich_graphics&amp;action=edit&amp;redlink=1">rich graphics</a>, and is also compatible with the <a title="Cascading Style Sheets" href="http://en.wikipedia.org/wiki/Cascading_Style_Sheets">CSS</a> specification&#8217;s properties for styling purposes; thus, unlike <a title="XHTML" href="http://en.wikipedia.org/wiki/XHTML">XHTML</a> and <a class="mw-redirect" title="XSL-FO" href="http://en.wikipedia.org/wiki/XSL-FO">XSL-FO</a> which are layout-oriented languages, SVG is a fully presentational language.<sup class="reference"><a href="http://en.wikipedia.org/wiki/SVG#cite_note-3"></a></sup> A much more print-specialized subset of SVG (<a class="new" title="SVG Print (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=SVG_Print&amp;action=edit&amp;redlink=1">SVG Print</a>, authored by Canon, <a class="mw-redirect" title="HP" href="http://en.wikipedia.org/wiki/HP">HP</a>, Adobe and Corel) is currently a W3C Working Draft.<sup class="reference"><a href="http://en.wikipedia.org/wiki/SVG#cite_note-4"></a></sup></p>
<p>SVG drawings can be dynamic and interactive. Time-based modifications to the elements can be described in <a title="Synchronized Multimedia Integration Language" href="http://en.wikipedia.org/wiki/Synchronized_Multimedia_Integration_Language">SMIL</a>, or can be programmed in a <a class="mw-redirect" title="Scripting" href="http://en.wikipedia.org/wiki/Scripting">scripting</a> language (e.g., <a title="ECMAScript" href="http://en.wikipedia.org/wiki/ECMAScript">ECMAScript</a>). The W3C explicitly recommends SMIL as the standard for animation in SVG,<sup class="reference"><a href="http://en.wikipedia.org/wiki/SVG#cite_note-5"></a></sup> however it is more common to find SVG animated with ECMAScript because it is a language that many developers already understand, and it is more compatible with existing renderers. A rich set of <a title="Event handler" href="http://en.wikipedia.org/wiki/Event_handler">event handlers</a> such as <em>onmouseover</em> and <em>onclick</em> can be assigned to any SVG graphical object.</p>
<p>SVG images, being XML, contain many repeated fragments of text and are thus particularly suited to <a title="Data compression" href="http://en.wikipedia.org/wiki/Data_compression">compression</a> by <a title="Gzip" href="http://en.wikipedia.org/wiki/Gzip">gzip</a>, though other compression methods may be used effectively. Once an SVG image has been compressed by <a title="Gzip" href="http://en.wikipedia.org/wiki/Gzip">gzip</a> it may be referred to as an &#8220;SVGZ&#8221; image; with the corresponding filename extension. The resulting file may be as small as 20% of the original size.<sup class="reference"><a href="http://en.wikipedia.org/wiki/SVG#cite_note-6"></a></sup></p>
<p>SVG was developed by the <a title="World Wide Web Consortium" href="http://en.wikipedia.org/wiki/World_Wide_Web_Consortium">W3C</a> <a title="SVG Working Group" href="http://en.wikipedia.org/wiki/SVG_Working_Group">SVG Working Group</a> starting in 1998, after <a title="Macromedia" href="http://en.wikipedia.org/wiki/Macromedia">Macromedia</a> and <a title="Microsoft" href="http://en.wikipedia.org/wiki/Microsoft">Microsoft</a> introduced <a title="Vector Markup Language" href="http://en.wikipedia.org/wiki/Vector_Markup_Language">Vector Markup Language</a> (VML) whereas <a title="Adobe Systems" href="http://en.wikipedia.org/wiki/Adobe_Systems">Adobe Systems</a> and <a title="Sun Microsystems" href="http://en.wikipedia.org/wiki/Sun_Microsystems">Sun Microsystems</a> submitted a competing format known as PGML. The <a title="SVG Working Group" href="http://en.wikipedia.org/wiki/SVG_Working_Group">working group</a> was chaired by <a title="Chris Lilley (W3C)" href="http://en.wikipedia.org/wiki/Chris_Lilley_%28W3C%29">Chris Lilley</a> of the W3C.</p>
<ul>
<li>SVG 1.0 became a <a title="World Wide Web Consortium" href="http://en.wikipedia.org/wiki/World_Wide_Web_Consortium#Recommendations_and_Certifications">W3C Recommendation</a> on September 4, 2001.<sup class="reference"><a href="http://en.wikipedia.org/wiki/SVG#cite_note-7"></a></sup></li>
<li>SVG 1.1 became a W3C Recommendation on January 14, 2003.<sup class="reference"><a href="http://en.wikipedia.org/wiki/SVG#cite_note-svg11-8"></a></sup> The SVG 1.1 specification is modularized in order to allow subsets to be defined as profiles. Apart from this, there is very little difference between SVG 1.1 and SVG 1.0.
<ul>
<li><a class="mw-redirect" title="SVG Tiny" href="http://en.wikipedia.org/wiki/SVG_Tiny">SVG Tiny</a> and <a class="new" title="SVG Basic (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=SVG_Basic&amp;action=edit&amp;redlink=1">SVG Basic</a> (the Mobile SVG Profiles) became W3C Recommendations on January 14, 2003. These are described as profiles of SVG 1.1.</li>
</ul>
</li>
<li>SVG Tiny 1.2 became a W3C Recommendation on December 22, 2008.<sup class="reference"><a href="http://en.wikipedia.org/wiki/SVG#cite_note-9"></a></sup></li>
<li>SVG Full 1.2 is a W3C Working Draft. SVG Tiny 1.2 was initially released as a profile, and later refactored to be a complete specification, including all needed parts of SVG 1.1 and SVG 1.2. SVG 1.2 Full adds modules onto the <a class="mw-redirect" title="SVGT" href="http://en.wikipedia.org/wiki/SVGT">SVGT</a> 1.2 core.</li>
<li>SVG Print adds syntax for multi-page documents and mandatory color management support.</li>
</ul>
<p>Because of industry demand, two mobile profiles were introduced with SVG 1.1: <em>SVG Tiny</em> (SVGT) and <em>SVG Basic</em> (SVGB). These are subsets of the full SVG standard, mainly intended for <a title="User agent" href="http://en.wikipedia.org/wiki/User_agent">user agents</a> with limited capabilities. In particular, SVG Tiny was defined for highly restricted mobile devices such as <a class="mw-redirect" title="Cellphone" href="http://en.wikipedia.org/wiki/Cellphone">cellphones</a>, and SVG Basic was defined for higher-level mobile devices, such as <a title="Personal digital assistant" href="http://en.wikipedia.org/wiki/Personal_digital_assistant">PDAs</a>.</p>
<p>In 2003, the <a title="3GPP" href="http://en.wikipedia.org/wiki/3GPP">3GPP</a> adopted SVG Tiny as the required graphics format for next-generation phones and <a title="Multimedia Messaging Service" href="http://en.wikipedia.org/wiki/Multimedia_Messaging_Service">Multimedia Messaging Services</a> (MMS).</p>
<p>Neither mobile profile includes support for the full DOM, while only SVG Basic has optional support for scripting, but because they are fully compatible subsets of the full standard most SVG graphics can still be rendered by devices which only support the mobile profiles.<sup class="reference"><a href="http://en.wikipedia.org/wiki/SVG#cite_note-10"></a></sup></p>
<p>SVGT 1.2 adds a microDOM (μDOM), allowing all mobile needs to be met with a single profile.</p>
<p>The SVG 1.1 specification defines 14 important functional areas<sup class="reference"><a href="http://en.wikipedia.org/wiki/SVG#cite_note-svg11-8"></a></sup> or feature sets:</p>
<dl>
<dt>Paths</dt>
<dd>Simple or compound shape outlines drawn with curved or straight lines can be filled in or outlined (or used as a <a title="Clipping path" href="http://en.wikipedia.org/wiki/Clipping_path">clipping path</a>) and are expressed in a highly compact coding in which, for example, <strong>M</strong> precedes the initial numeric X and Y <a title="Coordinate system" href="http://en.wikipedia.org/wiki/Coordinate_system">coordinates</a> and <strong>L</strong> will precede a subsequent point to which a line should be drawn.<sup class="reference"><a href="http://en.wikipedia.org/wiki/SVG#cite_note-path-11"></a></sup></dd>
<dt>Basic Shapes</dt>
<dd>Straight-line paths or paths made up of a series of connected straight-line segments (polylines), as well as closed polygons, circles and ellipses can be drawn. Rectangles and round-cornered &#8220;rectangles&#8221; are other standard elements.<sup class="reference"><a href="http://en.wikipedia.org/wiki/SVG#cite_note-shap-12"></a></sup></dd>
<dt>Text</dt>
<dd>Unicode character text included in an SVG file is expressed as <a title="XML" href="http://en.wikipedia.org/wiki/XML">XML</a> character data. Many visual effects are possible, and the SVG specification automatically handles bidirectional text (as when composing a combination of English and Arabic text, for example), vertical text (as Chinese was historically written) and characters along a curved path (such as the text around the edges of the <a title="Great Seal of the United States" href="http://en.wikipedia.org/wiki/Great_Seal_of_the_United_States">Great Seal of the United States</a>).<sup class="reference"><a href="http://en.wikipedia.org/wiki/SVG#cite_note-text-13"></a></sup></dd>
<dt>Painting</dt>
<dd>SVG shapes can be filled and/or outlined (painted with a color, a gradient or a pattern). Fills can be opaque or have various degrees of transparency. &#8220;Markers&#8221; are end-of-line features, such as arrowheads, or symbols which can appear at the vertices of a polygon.<sup class="reference"><a href="http://en.wikipedia.org/wiki/SVG#cite_note-pntg-14"></a></sup></dd>
<dt>Color</dt>
<dd>Colors can be applied to all visible SVG elements, either directly or via the &#8216;fill&#8217;, &#8217;stroke&#8217; and other properties. Colors are specified in the same way as in <a title="Cascading Style Sheets" href="http://en.wikipedia.org/wiki/Cascading_Style_Sheets">CSS2</a>, i.e. using names like <code>black</code> or <code>blue</code>, in <a title="Hexadecimal" href="http://en.wikipedia.org/wiki/Hexadecimal">hexadecimal</a> such as <code>#2f0</code> or <code>#22ff00</code>, in decimal like <code>rgb(255,255,127)</code> or as percentages of the form <code>rgb(100%,100%,50%)</code>.<sup class="reference"><a href="http://en.wikipedia.org/wiki/SVG#cite_note-colr-15"></a></sup></dd>
<dt>Gradients and Patterns</dt>
<dd>SVG shapes can be filled or outlined with solid colors as above, or with color gradients or with repeating patterns. Color gradients can be linear or radial (circular), and can involve any number of colors as well as repeats. Opacity gradients can also be specified. Patterns are based on predefined raster or vector graphic objects, which can be repeated in x and/or y directions. Gradients and patterns can be animated and scripted.<sup class="reference"><a href="http://en.wikipedia.org/wiki/SVG#cite_note-patt-16"></a></sup></dd>
<dt>Clipping, Masking and Compositing</dt>
<dd>Graphic elements, including text, paths, basic shapes and combinations of these, can be used as outlines to define both &#8216;inside&#8217; and &#8216;outside&#8217; regions that can be painted (with colors, gradients and patterns) independently. Fully opaque <em>clipping paths</em> and semi-transparent <em>masks</em> are <em>composited</em> together to calculate the color and opacity of every pixel of the final image, using simple <a title="Alpha compositing" href="http://en.wikipedia.org/wiki/Alpha_compositing">alpha</a> blending.<sup class="reference"><a href="http://en.wikipedia.org/wiki/SVG#cite_note-mask-17"></a></sup></dd>
</dl>
<p>The use of SVG on the web is in its infancy; there is a great deal of inertia due to the long-time use of pure raster formats and other formats like <a title="Adobe Flash" href="http://en.wikipedia.org/wiki/Adobe_Flash">Adobe Flash</a> or <a title="Java applet" href="http://en.wikipedia.org/wiki/Java_applet">Java applets</a>, and browser support for SVG is still uneven. Web sites which serve SVG images, for example <a title="Wikipedia" href="http://en.wikipedia.org/wiki/Wikipedia">Wikipedia</a>, typically also provide the images in a raster format, either automatically by <a class="mw-redirect" title="HTTP" href="http://en.wikipedia.org/wiki/HTTP">HTTP</a> <a title="Content negotiation" href="http://en.wikipedia.org/wiki/Content_negotiation">content negotiation</a> or allowing the user to directly choose the file.</p>
<p>There are several advantages to native support: plugins would not need to be installed, SVG could be freely mixed with other formats in a single document, and rendering scripting between different document formats would be considerably more reliable. At this time all major browsers have committed to some level of SVG support except for Internet Explorer which will also not support SVG in the upcoming version IE8<sup class="reference"><a href="http://en.wikipedia.org/wiki/SVG#cite_note-25"></a></sup><sup class="reference"><a href="http://en.wikipedia.org/wiki/SVG#cite_note-26"></a></sup>. Other browsers&#8217; implementations are not yet fully functional. See <a class="mw-redirect" title="Comparison of layout engines (SVG)" href="http://en.wikipedia.org/wiki/Comparison_of_layout_engines_%28SVG%29">Comparison of layout engines</a> for further details. As of 2008<sup class="plainlinks asof-tag update"><a class="external text" title="http://en.wikipedia.org/w/index.php?title=Scalable_Vector_Graphics&amp;action=edit" rel="nofollow" href="http://en.wikipedia.org/w/index.php?title=Scalable_Vector_Graphics&amp;action=edit">[update]</a></sup>, only <a title="Opera (web browser)" href="http://en.wikipedia.org/wiki/Opera_%28web_browser%29">Opera</a> and <a title="Safari (web browser)" href="http://en.wikipedia.org/wiki/Safari_%28web_browser%29">Safari</a> support embedding via the <code>&lt;img&gt;</code> tag. <a title="Tim Berners-Lee" href="http://en.wikipedia.org/wiki/Tim_Berners-Lee">Tim Berners-Lee</a>, the inventor of <a title="World Wide Web" href="http://en.wikipedia.org/wiki/World_Wide_Web">the Web</a>, has been critical of Internet Explorer for its failure to support SVG.<sup class="reference"><a href="http://en.wikipedia.org/wiki/SVG#cite_note-27"></a></sup></p>
<ul>
<li><a title="Opera (web browser)" href="http://en.wikipedia.org/wiki/Opera_%28web_browser%29">Opera</a> (since 8.0) has support for the SVG 1.1 Tiny specification while Opera 9 includes SVG 1.1 Basic support and some of SVG 1.1 Full. Since 9.5 Opera has partial SVG Tiny 1.2 support.</li>
<li>Browsers based on the <a title="Gecko (layout engine)" href="http://en.wikipedia.org/wiki/Gecko_%28layout_engine%29">Gecko layout engine</a> (such as <a title="Mozilla Firefox" href="http://en.wikipedia.org/wiki/Mozilla_Firefox">Firefox</a>, <a title="Flock (web browser)" href="http://en.wikipedia.org/wiki/Flock_%28web_browser%29">Flock</a>, <a title="Netscape" href="http://en.wikipedia.org/wiki/Netscape">Netscape</a>, <a title="Camino" href="http://en.wikipedia.org/wiki/Camino">Camino</a>, <a title="SeaMonkey" href="http://en.wikipedia.org/wiki/SeaMonkey">SeaMonkey</a> and <a title="Epiphany (browser)" href="http://en.wikipedia.org/wiki/Epiphany_%28browser%29">Epiphany</a>), all have incomplete support for the SVG 1.1 Full specification since 2005. The Mozilla site has an overview of the modules which are supported in Firefox<sup class="reference"><a href="http://en.wikipedia.org/wiki/SVG#cite_note-28"></a></sup> and an overview of the modules which are in progress in the development<sup class="reference"><a href="http://en.wikipedia.org/wiki/SVG#cite_note-29"></a></sup>. Gecko 1.9, included in <a class="mw-redirect" title="Firefox 3.0" href="http://en.wikipedia.org/wiki/Firefox_3.0#Version_3.0">Firefox 3.0</a>, adds support for more of the SVG specification (including filters).<sup class="reference"><a href="http://en.wikipedia.org/wiki/SVG#cite_note-30"></a></sup></li>
<li>Browsers based on <a title="WebKit" href="http://en.wikipedia.org/wiki/WebKit">WebKit</a> (such as <a class="mw-redirect" title="Apple Computer" href="http://en.wikipedia.org/wiki/Apple_Computer">Apple</a>&#8217;s <a title="Safari (web browser)" href="http://en.wikipedia.org/wiki/Safari_%28web_browser%29">Safari</a>, <a title="Google Chrome" href="http://en.wikipedia.org/wiki/Google_Chrome">Google Chrome</a>, and <a title="The Omni Group" href="http://en.wikipedia.org/wiki/The_Omni_Group">The Omni Group</a>&#8217;s <a title="OmniWeb" href="http://en.wikipedia.org/wiki/OmniWeb">OmniWeb</a>) have incomplete support for the SVG 1.1 Full specification since 2006.<sup class="reference"><a href="http://en.wikipedia.org/wiki/SVG#cite_note-31"></a></sup> This includes Safari 3.0 and later (included with <a title="Mac OS X v10.5" href="http://en.wikipedia.org/wiki/Mac_OS_X_v10.5">Mac OS X v10.5</a> and <a title="Mac OS X v10.4" href="http://en.wikipedia.org/wiki/Mac_OS_X_v10.4">Mac OS X v10.4.11</a>) as well as Mobile Safari as of <a title="IPhone OS" href="http://en.wikipedia.org/wiki/IPhone_OS">iPhone OS</a> 2.1.</li>
<li><a title="Amaya (web browser)" href="http://en.wikipedia.org/wiki/Amaya_%28web_browser%29">Amaya</a> has partial SVG support.</li>
</ul>
<p>As of October 2008<sup class="plainlinks asof-tag update"><a class="external text" title="http://en.wikipedia.org/w/index.php?title=Scalable_Vector_Graphics&amp;action=edit" rel="nofollow" href="http://en.wikipedia.org/w/index.php?title=Scalable_Vector_Graphics&amp;action=edit">[update]</a></sup>, <a title="Internet Explorer" href="http://en.wikipedia.org/wiki/Internet_Explorer">Windows Internet Explorer</a> provides no native SVG support. IE requires a <a class="mw-redirect" title="Plugin" href="http://en.wikipedia.org/wiki/Plugin">plugin</a> to render SVG content.</p>
<p><a title="Adobe" href="http://en.wikipedia.org/wiki/Adobe">Adobe</a> provides SVG Viewer, the most widely used SVG plugin, but plans to discontinue support on <a title="January 1" href="http://en.wikipedia.org/wiki/January_1">January 1</a>, <a title="2009" href="http://en.wikipedia.org/wiki/2009">2009</a>. SVG Viewer will remain available for download after this date<sup class="reference"><a href="http://en.wikipedia.org/wiki/SVG#cite_note-32"></a></sup><sup class="reference"><a href="http://en.wikipedia.org/wiki/SVG#cite_note-AdobeEoL-33"></a></sup>. The plugin supports most of SVG 1.0/1.1. Adobe SVG plugin support for pre-3.0 versions of <a title="Safari (web browser)" href="http://en.wikipedia.org/wiki/Safari_%28web_browser%29">Safari</a> is for <a title="PowerPC" href="http://en.wikipedia.org/wiki/PowerPC">PowerPC</a> only. User-reported issues include lack of a scrolling feature, to enable viewing of any area of the SVG lying outside the visible area of its containing window.</p>
<p><a title="KDE" href="http://en.wikipedia.org/wiki/KDE">KDE</a>&#8217;s <a title="Konqueror" href="http://en.wikipedia.org/wiki/Konqueror">Konqueror</a> SVG plugin release is <a title="KSVG" href="http://en.wikipedia.org/wiki/KSVG">KSVG</a>. KSVG2 was rolled into <a title="KDE 4" href="http://en.wikipedia.org/wiki/KDE_4">KDE 4 core</a>, making it native-rendering. (SVG finds increasing use on the KDE platform: this system-wide support for SVG graphics in version 4 follows early support for <a title="Computer wallpaper" href="http://en.wikipedia.org/wiki/Computer_wallpaper">SVG wallpaper</a> at version <a title="KDE 3" href="http://en.wikipedia.org/wiki/KDE_3#KDE_3.4">3.4</a>.)</p>
<p><a title="Corel Corporation" href="http://en.wikipedia.org/wiki/Corel_Corporation">Corel</a> once offered an SVG Viewer plugin, but has ceased development.</p>
<p>Images are usually automatically rasterised using a library such as <a title="ImageMagick" href="http://en.wikipedia.org/wiki/ImageMagick">ImageMagick</a>, which provides a quick but incomplete implementation of SVG, or <a title="Batik (software)" href="http://en.wikipedia.org/wiki/Batik_%28software%29">Batik</a>, which implements nearly all of SVG 1.1 but requires the <a class="mw-redirect" title="Java Runtime Environment" href="http://en.wikipedia.org/wiki/Java_Runtime_Environment">Java Runtime Environment</a>.</p>
<ul>
<li><a title="Inkscape" href="http://en.wikipedia.org/wiki/Inkscape">Inkscape</a> is a <a title="Free software" href="http://en.wikipedia.org/wiki/Free_software">free software</a> SVG drawing program for <a title="Linux" href="http://en.wikipedia.org/wiki/Linux">Linux</a>, <a title="Microsoft Windows" href="http://en.wikipedia.org/wiki/Microsoft_Windows">Microsoft Windows</a> and <a title="Mac OS X" href="http://en.wikipedia.org/wiki/Mac_OS_X">Mac OS X</a>.</li>
<li>The <a title="Batik (software)" href="http://en.wikipedia.org/wiki/Batik_%28software%29">Batik SVG Toolkit</a> can be used by Java programs to render, generate, and manipulate SVG graphics.</li>
<li><a title="Xfig" href="http://en.wikipedia.org/wiki/Xfig">xfig</a> allows import and export of SVG drawings.</li>
<li>The <a title="GNOME" href="http://en.wikipedia.org/wiki/GNOME">GNOME</a> project has had integrated SVG support throughout the desktop since <a title="2000" href="http://en.wikipedia.org/wiki/2000">2000</a>.</li>
<li><a title="OpenOffice.org Draw" href="http://en.wikipedia.org/wiki/OpenOffice.org_Draw">OpenOffice.org Draw</a> can export SVG drawings. Import extensions are available to import SVG images into <a title="OpenOffice.org" href="http://en.wikipedia.org/wiki/OpenOffice.org">OpenOffice.org</a> Draw.<sup class="reference"><a href="http://en.wikipedia.org/wiki/SVG#cite_note-SVG_import_extension_for_OpenOffice.org-34"></a></sup></li>
<li><a title="Go-oo" href="http://en.wikipedia.org/wiki/Go-oo">Go-oo</a> Draw (<a title="OpenOffice.org" href="http://en.wikipedia.org/wiki/OpenOffice.org">OpenOffice.org</a> variant) can open and export SVG files.<sup class="reference"><a href="http://en.wikipedia.org/wiki/SVG#cite_note-SVG_import_filter_in_Go-OO-35"></a></sup></li>
<li><a class="mw-redirect" title="OxygenOffice" href="http://en.wikipedia.org/wiki/OxygenOffice">OxygenOffice</a> Draw (<a title="OpenOffice.org" href="http://en.wikipedia.org/wiki/OpenOffice.org">OpenOffice.org</a> variant) can open and export SVG files.<sup class="reference"><a href="http://en.wikipedia.org/wiki/SVG#cite_note-SVG_import_filter_in_OxygenOffice-36"></a></sup></li>
<li><a title="Adobe Illustrator" href="http://en.wikipedia.org/wiki/Adobe_Illustrator">Adobe Illustrator</a> supports both the import and export of SVG images. <a class="mw-redirect" title="Photoshop" href="http://en.wikipedia.org/wiki/Photoshop">Photoshop</a>, however, does not support SVG import. When writing SVG files Illustrator embeds a complete copy of the image in a proprietary format for later reediting. This often results in changes being lost if another editor is used then the file is reopened in Illustrator.</li>
<li><a title="CorelDRAW" href="http://en.wikipedia.org/wiki/CorelDRAW">CorelDRAW</a> has an SVG export and import filter.</li>
<li><a title="Xara Xtreme" href="http://en.wikipedia.org/wiki/Xara_Xtreme">Xara Xtreme</a> has an SVG export and import filter in its free/open source Linux version.</li>
<li><a title="Microsoft Visio" href="http://en.wikipedia.org/wiki/Microsoft_Visio">Microsoft Visio</a> can save files in the SVG format as well as the SVG compressed format. Graphs created in <a title="Microsoft Excel" href="http://en.wikipedia.org/wiki/Microsoft_Excel">Microsoft Excel</a> or figures from <a title="Microsoft Word" href="http://en.wikipedia.org/wiki/Microsoft_Word">Microsoft Word</a> can be cut and pasted into <a title="Microsoft Visio" href="http://en.wikipedia.org/wiki/Microsoft_Visio">Microsoft Visio</a> documents.</li>
<li><a class="mw-redirect" title="The GIMP" href="http://en.wikipedia.org/wiki/The_GIMP">The GIMP</a> allows SVG images to be imported as paths or rendered <a title="Bitmap" href="http://en.wikipedia.org/wiki/Bitmap">bitmaps</a>.</li>
<li><a title="Blender (software)" href="http://en.wikipedia.org/wiki/Blender_%28software%29">Blender</a> will import SVG graphics as paths.</li>
<li><a title="Cairo (graphics)" href="http://en.wikipedia.org/wiki/Cairo_%28graphics%29">Cairo</a> is a vector graphics based library which can generate SVG. It has bindings for many programming languages including <a title="Haskell (programming language)" href="http://en.wikipedia.org/wiki/Haskell_%28programming_language%29">Haskell</a>, Java, Perl, <a title="Python (programming language)" href="http://en.wikipedia.org/wiki/Python_%28programming_language%29">Python</a>, Scheme, Smalltalk and several others.</li>
<li><a class="new" title="Altsoft (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=Altsoft&amp;action=edit&amp;redlink=1">Altsoft</a> <a title="Xml2PDF" href="http://en.wikipedia.org/wiki/Xml2PDF">Xml2PDF</a> allows converting SVG files to PDF, PS, various GDI+ formats.</li>
</ul>
<p>On mobile, the most popular implementations for mobile phones are by <a class="new" title="Ikivo (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=Ikivo&amp;action=edit&amp;redlink=1">Ikivo</a> and <a class="new" title="Bitflash (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=Bitflash&amp;action=edit&amp;redlink=1">Bitflash</a>, while for PDAs, Bitflash and <a class="new" title="Intesis (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=Intesis&amp;action=edit&amp;redlink=1">Intesis</a> have implementations. <a title="Adobe Flash Lite" href="http://en.wikipedia.org/wiki/Adobe_Flash_Lite">Flash Lite</a> by <a title="Adobe Systems" href="http://en.wikipedia.org/wiki/Adobe_Systems">Adobe</a> optionally supports SVG Tiny since version 1.1. At the <a class="new" title="SVG Open (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=SVG_Open&amp;action=edit&amp;redlink=1">SVG Open</a> 2005 conference, <a title="Sun Microsystems" href="http://en.wikipedia.org/wiki/Sun_Microsystems">Sun</a> demonstrated a mobile implementation of SVG Tiny 1.1 for the CLDC platform.</p>
<p>Mobile SVG players from Ikivo and BitFlash come pre-installed, i.e., the manufacturers burn the SVG player code in their mobiles before shipping to the customers. Mobiles also can include full web browsers (such as <a title="Opera Mini" href="http://en.wikipedia.org/wiki/Opera_Mini">Opera Mini</a> and the <a title="IPhone" href="http://en.wikipedia.org/wiki/IPhone">iPhone</a>&#8217;s Safari) which include SVG support.</p>
<p>The level of SVG Tiny support available varies from mobile to mobile, depending on the manufacturer and version of the SVG engine installed. Many of the new mobiles support additional features beyond SVG Tiny 1.1, like gradient and opacity; this standard is often referred as SVGT 1.1+.</p>
<p><a title="Nokia" href="http://en.wikipedia.org/wiki/Nokia">Nokia&#8217;s</a> <a class="mw-redirect" title="S60 platform" href="http://en.wikipedia.org/wiki/S60_platform">S60 platform</a> has built-in support for SVG. For example, icons are generally rendered using the platform&#8217;s SVG engine. Nokia has also led the <a class="external text" title="http://www.jcp.org/en/jsr/detail?id=226" rel="nofollow" href="http://www.jcp.org/en/jsr/detail?id=226">JSR 226: Scalable 2D Vector Graphics API</a> expert group which defines Java ME API for SVG presentation and manipulation. This API has been implemented in S60 Platform 3rd Edition Feature Pack 1 onward.<sup class="reference"><a href="http://en.wikipedia.org/wiki/SVG#cite_note-37"></a></sup> Some Series 40 phones also support SVG (such as <a class="mw-redirect" title="Nokia 6280" href="http://en.wikipedia.org/wiki/Nokia_6280">6280</a>).</p>
<p>Most <a title="Sony Ericsson" href="http://en.wikipedia.org/wiki/Sony_Ericsson">Sony Ericsson</a> phones beginning with <a class="mw-redirect" title="K700" href="http://en.wikipedia.org/wiki/K700">K700</a> (by release date) support SVG Tiny 1.1. Phones beginning with <a class="mw-redirect" title="K750" href="http://en.wikipedia.org/wiki/K750">K750</a> also support such features as opacity and gradients. Phones with <a title="Sony Ericsson Java Platform" href="http://en.wikipedia.org/wiki/Sony_Ericsson_Java_Platform">Java Platform</a>-8 have support for JSR 226.</p>
<p>SVG is also supported by other models from <a title="Motorola" href="http://en.wikipedia.org/wiki/Motorola">Motorola</a>, <a class="mw-redirect" title="Samsung" href="http://en.wikipedia.org/wiki/Samsung">Samsung</a>, <a class="mw-redirect" title="LG" href="http://en.wikipedia.org/wiki/LG">LG</a>, and <a class="mw-redirect" title="Siemens AG" href="http://en.wikipedia.org/wiki/Siemens_AG">Siemens</a>.</p>
<p><strong>11. WMF</strong></p>
<p><strong>Windows Metafile</strong> (<strong>WMF</strong>) is a <a title="Image file formats" href="http://en.wikipedia.org/wiki/Image_file_formats">graphics file format</a> on <a title="Microsoft Windows" href="http://en.wikipedia.org/wiki/Microsoft_Windows">Microsoft Windows</a> systems, originally designed in the early 1990s. Windows Metafiles are intended to be portable between applications and may contain both vector and bitmap components. In contrast to <a title="Raster graphics" href="http://en.wikipedia.org/wiki/Raster_graphics">raster formats</a> such as <a title="JPEG" href="http://en.wikipedia.org/wiki/JPEG">JPEG</a> and <a title="Graphics Interchange Format" href="http://en.wikipedia.org/wiki/Graphics_Interchange_Format">GIF</a> which are used to store bitmap graphics such as photographs, scans and graphics, Windows Metafiles generally are used to store line-art, illustrations and content created in drawing or presentation applications. Most Windows <a class="mw-redirect" title="Clipart" href="http://en.wikipedia.org/wiki/Clipart">clipart</a> is in the WMF format.</p>
<p>Essentially, a WMF file stores a list of function calls that have to be issued to the Windows graphics layer <a title="Graphics Device Interface" href="http://en.wikipedia.org/wiki/Graphics_Device_Interface">GDI</a> in order to display an image on screen. Since some GDI functions accept <a class="mw-redirect" title="Pointer" href="http://en.wikipedia.org/wiki/Pointer">pointers</a> to <a title="Callback (computer science)" href="http://en.wikipedia.org/wiki/Callback_%28computer_science%29">callback functions</a> for <a class="mw-redirect" title="Error handling" href="http://en.wikipedia.org/wiki/Error_handling">error handling</a>, a WMF file may include executable code.</p>
<p>WMF is a <a title="16-bit" href="http://en.wikipedia.org/wiki/16-bit">16-bit</a> format introduced in <a title="Windows 3.0" href="http://en.wikipedia.org/wiki/Windows_3.0">Windows 3.0</a>. It is the native <a title="Vector graphics" href="http://en.wikipedia.org/wiki/Vector_graphics">vector format</a> for <a title="Microsoft Office" href="http://en.wikipedia.org/wiki/Microsoft_Office">Microsoft Office</a> applications such as <a title="Microsoft Word" href="http://en.wikipedia.org/wiki/Microsoft_Word">Word</a>, <a title="Microsoft PowerPoint" href="http://en.wikipedia.org/wiki/Microsoft_PowerPoint">PowerPoint</a>, and <a title="Microsoft Publisher" href="http://en.wikipedia.org/wiki/Microsoft_Publisher">Publisher</a>. A newer <a title="32-bit" href="http://en.wikipedia.org/wiki/32-bit">32-bit</a> version with additional commands is called <strong>Enhanced Metafile</strong> (<strong>EMF</strong>). EMF is also used as a graphics language for printer drivers.</p>
<p>There are also compressed versions of Windows Metafiles known as <strong>Compressed Windows Metafile (WMZ)</strong> &amp; <strong>Compressed Windows Enhanced Metafile (EMZ)</strong><sup class="reference"><a href="http://en.wikipedia.org/wiki/Windows_Metafile#cite_note-0"></a></sup>.</p>
<p>As for other Microsoft file formats, no specification of the format was previously available, and alternative implementations had to <a title="Reverse engineering" href="http://en.wikipedia.org/wiki/Reverse_engineering">reverse engineer</a> existing WMF files, which was difficult and error prone.<sup class="reference"><a href="http://en.wikipedia.org/wiki/Windows_Metafile#cite_note-1"></a></sup> In <a title="September 2006" href="http://en.wikipedia.org/wiki/September_2006">September 2006</a>, Microsoft published the WMF file format specification<sup class="reference"><a href="http://en.wikipedia.org/wiki/Windows_Metafile#cite_note-2"></a></sup> in the context of the <a title="Microsoft Open Specification Promise" href="http://en.wikipedia.org/wiki/Microsoft_Open_Specification_Promise">Microsoft Open Specification Promise</a>, promising to not assert patent rights to file formats implementors.<sup class="reference"><a href="http://en.wikipedia.org/wiki/Windows_Metafile#cite_note-osp-3"></a></sup></p>
<p>In December 2005, a vulnerability was reported to <a title="Microsoft" href="http://en.wikipedia.org/wiki/Microsoft">Microsoft</a> by <a title="Symantec" href="http://en.wikipedia.org/wiki/Symantec">Symantec</a>. It was assessed and classified as critical. In certain cases, the graphics rendering engine allowed remote code execution. This vulnerability was resolved in a security update on January 5, 2006 on Microsoft TechNet (MS06-001) and generally released January 10, 2006. Details can be found in Microsoft Knowledge Base Article &#8220;Vulnerability in Graphics Rendering Engine Could Allow Remote Code Execution&#8221; (912919). It was also referred to as the WMF (Windows Meta File) vulnerability.</p>
<p>The WMF format was designed to be executed by the Windows graphics layer <a title="Graphics Device Interface" href="http://en.wikipedia.org/wiki/Graphics_Device_Interface">GDI</a> in order to restore the <a title="Image" href="http://en.wikipedia.org/wiki/Image">image</a>, but as the WMF binary files contain the definition of the <a title="Graphics Device Interface" href="http://en.wikipedia.org/wiki/Graphics_Device_Interface">GDI</a> graphic primitives that constitute this <a title="Image" href="http://en.wikipedia.org/wiki/Image">image</a>, it is possible to design alternative libraries that render WMF binary files, or convert them in other graphic formats.</p>
<p>For example, the <a title="Batik (software)" href="http://en.wikipedia.org/wiki/Batik_%28software%29">Batik</a> library is able to render WMF files and convert them to their <a title="Scalable Vector Graphics" href="http://en.wikipedia.org/wiki/Scalable_Vector_Graphics">SVG</a> equivalent. The Vector Graphics package of the <a title="FreeHEP" href="http://en.wikipedia.org/wiki/FreeHEP">FreeHEP</a> Java library allows the saving of <a class="mw-redirect" title="Java2D" href="http://en.wikipedia.org/wiki/Java2D">Java2D</a> drawings as EMF files.</p>
<p>EMZ is <a title="Gzip" href="http://en.wikipedia.org/wiki/Gzip">gzipped</a> EMF. One program that directly unpacks EMZ and WMZ files into EMF and WMF files is <a title="SpeedCommander" href="http://en.wikipedia.org/wiki/SpeedCommander">SpeedCommander 12</a>.</p>
<p><a id="See_also" name="See_also"></a></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/muhammadfauzie.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/muhammadfauzie.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/muhammadfauzie.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/muhammadfauzie.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/muhammadfauzie.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/muhammadfauzie.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/muhammadfauzie.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/muhammadfauzie.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/muhammadfauzie.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/muhammadfauzie.wordpress.com/3/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=muhammadfauzie.wordpress.com&blog=6043633&post=3&subd=muhammadfauzie&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://muhammadfauzie.wordpress.com/2009/01/04/graphics-file-format/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3450b831e5e45c04418a457ef3cd14c3?s=96&#38;d=identicon" medium="image">
			<media:title type="html">muhammadfauzie</media:title>
		</media:content>

		<media:content url="http://upload.wikimedia.org/math/e/9/4/e942bbe91f4fb5f97d55f375e61e52c2.png" medium="image">
			<media:title type="html">\mbox{rowsize} = 4 \cdot \Big\lfloor\frac {(n \cdot \mbox{width}) + 31}{32}\Big\rfloor</media:title>
		</media:content>

		<media:content url="http://upload.wikimedia.org/math/e/5/4/e54878375031e96d8fbd2a5eb3b761c5.png" medium="image">
			<media:title type="html">\mbox{filesize} \approx 54 + 4 \cdot 2^n + \mbox{rowsize} \cdot \mbox{height}</media:title>
		</media:content>

		<media:content url="http://upload.wikimedia.org/math/c/c/0/cc02d9602bc019ca809aa56daf2e7ba5.png" medium="image">
			<media:title type="html">4 \cdot 2^n</media:title>
		</media:content>

		<media:content url="http://upload.wikimedia.org/math/5/c/f/5cf84ffff352bfee47d447957b4edea9.png" medium="image">
			<media:title type="html">3 \cdot 2^n</media:title>
		</media:content>

		<media:content url="http://upload.wikimedia.org/math/8/b/f/8bf669b672d576b8904baa75de8e56a2.png" medium="image">
			<media:title type="html">\mbox{filesize} \approx 54 + \mbox{rowsize} \cdot \mbox{height} </media:title>
		</media:content>
	</item>
		<item>
		<title>Hello world!</title>
		<link>http://muhammadfauzie.wordpress.com/2009/01/04/hello-world/</link>
		<comments>http://muhammadfauzie.wordpress.com/2009/01/04/hello-world/#comments</comments>
		<pubDate>Sun, 04 Jan 2009 04:33:56 +0000</pubDate>
		<dc:creator>muhammadfauzie</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Welcome to WordPress.com. This is your first post. Edit or delete it and start blogging!
       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=muhammadfauzie.wordpress.com&blog=6043633&post=1&subd=muhammadfauzie&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Welcome to <a href="http://wordpress.com/">WordPress.com</a>. This is your first post. Edit or delete it and start blogging!</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/muhammadfauzie.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/muhammadfauzie.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/muhammadfauzie.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/muhammadfauzie.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/muhammadfauzie.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/muhammadfauzie.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/muhammadfauzie.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/muhammadfauzie.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/muhammadfauzie.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/muhammadfauzie.wordpress.com/1/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=muhammadfauzie.wordpress.com&blog=6043633&post=1&subd=muhammadfauzie&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://muhammadfauzie.wordpress.com/2009/01/04/hello-world/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3450b831e5e45c04418a457ef3cd14c3?s=96&#38;d=identicon" medium="image">
			<media:title type="html">muhammadfauzie</media:title>
		</media:content>
	</item>
	</channel>
</rss>