Warning: Unknown: Unable to allocate memory for pool. in Unknown on line 0

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/index.php on line 54

Warning: Cannot modify header information - headers already sent in /usr/local/www/mediawiki/includes/WebStart.php on line 63

Warning: require_once(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/WebStart.php on line 94

Warning: require_once(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/WebStart.php on line 97

Warning: require_once(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/WebStart.php on line 100

Warning: require_once(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/WebStart.php on line 103

Warning: require_once(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/Defines.php on line 187

Warning: require_once(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/WebStart.php on line 115

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require_once(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/WebStart.php on line 134

Warning: require_once(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/LocalSettings.php on line 137

Warning: require_once(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/LocalSettings.php on line 139

Warning: require_once(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/LocalSettings.php on line 144

Warning: require_once(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/LocalSettings.php on line 145

Warning: require_once(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/LocalSettings.php on line 153

Warning: require_once(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/WebStart.php on line 150

Warning: require_once(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/WebStart.php on line 157

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require_once(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/Setup.php on line 381

Warning: require_once(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/Setup.php on line 382

Warning: require_once(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/Setup.php on line 383

Warning: require_once(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/Setup.php on line 384

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require_once(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/languages/Language.php on line 20

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: Cannot modify header information - headers already sent in /usr/local/www/mediawiki/includes/WebResponse.php on line 38

Warning: Cannot modify header information - headers already sent in /usr/local/www/mediawiki/includes/WebResponse.php on line 38

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: include(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/resourceloader/ResourceLoader.php on line 201

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007
GIF - Just Solve the File Format Problem

GIF

From Just Solve the File Format Problem
(Difference between revisions)
Jump to: navigation, search
(List application extensions)
Line 14: Line 14:
  
 
People argue a lot over whether to pronounce "GIF" with a hard or a soft G. Both pronunciations are acceptable to the Oxford American Dictionaries, which [http://www.poynter.org/latest-news/mediawire/195430/gif-as-a-verb-is-dictionarys-word-of-the-year/ named it the word of the year] in 2012, in its supposed usage as a verb (which they don't seem to actually use in a sentence anywhere in their announcement). Pedants say that the hard "g" is proper due to it standing for "graphics", which has a hard "g", but others cite the normal English pattern of pronouncing "g" soft when followed by an "i" (though, like most English spelling and pronunciation rules, it has exceptions like "gift"). The peanut-butter brand Jif, with its slogan "Choosy moms choose Jif", may also have some influence in the soft-pronunciation direction (though it is actually spelled with a "J").
 
People argue a lot over whether to pronounce "GIF" with a hard or a soft G. Both pronunciations are acceptable to the Oxford American Dictionaries, which [http://www.poynter.org/latest-news/mediawire/195430/gif-as-a-verb-is-dictionarys-word-of-the-year/ named it the word of the year] in 2012, in its supposed usage as a verb (which they don't seem to actually use in a sentence anywhere in their announcement). Pedants say that the hard "g" is proper due to it standing for "graphics", which has a hard "g", but others cite the normal English pattern of pronouncing "g" soft when followed by an "i" (though, like most English spelling and pronunciation rules, it has exceptions like "gift"). The peanut-butter brand Jif, with its slogan "Choosy moms choose Jif", may also have some influence in the soft-pronunciation direction (though it is actually spelled with a "J").
 +
 +
== Format ==
 +
A GIF file has of a header (cosisting of a signature, a "screen descriptor", and optionally a global color table), followed by a sequence of tagged blocks of various types.
 +
 +
Block type 0x21 is an ''extension''. Each extension has a byte indicating its type. Extension type 0xff is an ''application extension'', which can be used to store arbitrary data.
 +
 +
An application extension's specific type is then indicated by an identifier of exactly 8 ASCII characters, plus a three-byte "authentication code" to reduce the chance of a conflict. In effect, this means it has an 11-byte identifier.
 +
 +
=== Known application extensions ===
 +
 +
* <code>"NETSCAPE" 0x32 0x2e 0x30 ("NETSCAPE2.0")</code>
 +
 +
Used in animated GIFs. Indicates the number of times to repeat the animation.
 +
 +
* <code>"ICCRGBG1" 0x30 0x31 0x32 ("ICCRGBG1012")</code>
 +
 +
Stores an [[ICC profile]].
 +
 +
* <code>"XMP Data" 0x58 0x4d 0x50 ("XMP DataXMP")</code>
 +
 +
Stores [[XMP]] metadata.
 +
 +
* <code>"fractint" ?? ?? ??</code>
 +
 +
Used by the DOS program FractInt to save additional data (fractal parameters). The only documentation about this may be the [http://www.programmersheaven.com/download/14057/65/ZipView.aspx source code].
  
 
== Specifications ==
 
== Specifications ==
Line 24: Line 49:
 
** [http://odur.let.rug.nl/~kleiweg/gif/GIF89a.html HTML]
 
** [http://odur.let.rug.nl/~kleiweg/gif/GIF89a.html HTML]
 
* [http://odur.let.rug.nl/~kleiweg/gif/netscape.html GIF Application Extension: NETSCAPE2.0]
 
* [http://odur.let.rug.nl/~kleiweg/gif/netscape.html GIF Application Extension: NETSCAPE2.0]
 
The DOS program FractInt saves additional data (fractal parameters) in its GIF files. The only documentation about this is the [http://www.programmersheaven.com/download/14057/65/ZipView.aspx corresponding source code file].
 
  
 
== External links ==
 
== External links ==

Revision as of 20:17, 4 May 2013

File Format
Name GIF
Ontology
Extension(s) .gif
MIME Type(s) image/gif
PRONOM fmt/3
fmt/4
Released 1987

Graphics Interchange Format (GIF) was introduced by the CompuServe online service in 1987, intended to provide a consistent and compact format for graphics to be downloaded on that service. Since the specifications were openly released, the format gained wide use in graphics software and on online services and bulletin board systems (BBSs), not just CompuServe.

In 1994, it became widely known that the format was encumbered by the use of the patent-protected LZW compression technology, for which its owner, Unisys, was demanding licencing terms and royalties for certain sorts of uses. This made GIF a less-than-free format, spurring a desire on the part of some people for an unencumbered format, which led to the creation of the PNG format. However, it took several years for PNG to get widespread support in software, and in the meantime the World Wide Web experienced meteoric growth with GIF still used as the primary graphics format (alongside JPEG), though eventually PNG did become widespread on the Web as well. The patent in question expired in the US in 2003, and in other countries in 2004, so it is no longer an issue.

Unlike most other graphic formats, GIF supports multiple-frame animated graphics in addition to single-image graphics. These animated GIFs often turn up on the Web, though they are usually thought of as somewhat "retro" these days because they remind people of the excesses of the early wave of Web popularity when such tricks were common on pages on services such as GeoCities.

People argue a lot over whether to pronounce "GIF" with a hard or a soft G. Both pronunciations are acceptable to the Oxford American Dictionaries, which named it the word of the year in 2012, in its supposed usage as a verb (which they don't seem to actually use in a sentence anywhere in their announcement). Pedants say that the hard "g" is proper due to it standing for "graphics", which has a hard "g", but others cite the normal English pattern of pronouncing "g" soft when followed by an "i" (though, like most English spelling and pronunciation rules, it has exceptions like "gift"). The peanut-butter brand Jif, with its slogan "Choosy moms choose Jif", may also have some influence in the soft-pronunciation direction (though it is actually spelled with a "J").

Contents

Format

A GIF file has of a header (cosisting of a signature, a "screen descriptor", and optionally a global color table), followed by a sequence of tagged blocks of various types.

Block type 0x21 is an extension. Each extension has a byte indicating its type. Extension type 0xff is an application extension, which can be used to store arbitrary data.

An application extension's specific type is then indicated by an identifier of exactly 8 ASCII characters, plus a three-byte "authentication code" to reduce the chance of a conflict. In effect, this means it has an 11-byte identifier.

Known application extensions

  • "NETSCAPE" 0x32 0x2e 0x30 ("NETSCAPE2.0")

Used in animated GIFs. Indicates the number of times to repeat the animation.

  • "ICCRGBG1" 0x30 0x31 0x32 ("ICCRGBG1012")

Stores an ICC profile.

  • "XMP Data" 0x58 0x4d 0x50 ("XMP DataXMP")

Stores XMP metadata.

  • "fractint" ?? ?? ??

Used by the DOS program FractInt to save additional data (fractal parameters). The only documentation about this may be the source code.

Specifications

External links

Personal tools
Namespaces

Variants
Actions
Navigation
Toolbox

Warning: Cannot modify header information - headers already sent in /usr/local/www/mediawiki/includes/WebResponse.php on line 38

Warning: Cannot modify header information - headers already sent in /usr/local/www/mediawiki/includes/WebResponse.php on line 38

Warning: Cannot modify header information - headers already sent in /usr/local/www/mediawiki/includes/WebResponse.php on line 38

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007