Cartoon Gif Shoveling Fill Up Again

Bitmap image file format family

GIF
Rotating earth (large).gif

An animated GIF of a rotating globe

Filename extension

.gif

Internet media type

image/gif

Type code GIFf
Uniform Type Identifier (UTI) com.compuserve.gif
Magic number GIF87a/GIF89a
Developed past CompuServe
Initial release 15 June 1987; 34 years ago  (1987-06-fifteen) [1]
Latest release

89a
1989; 33 years ago  (1989) [2]

Type of format lossless bitmap image format
Website www.w3.org/Graphics/GIF/spec-gif89a.txt

The Graphics Interchange Format (GIF; GHIF or JIF , see pronunciation) is a bitmap image format that was developed past a team at the online services provider CompuServe led past American figurer scientist Steve Wilhite and released on fifteen June 1987.[1] It has since come into widespread usage on the World Wide Web due to its wide back up and portability betwixt applications and operating systems.

The format supports up to eight bits per pixel for each image, allowing a single image to reference its own palette of upward to 256 different colors chosen from the 24-bit RGB color space. It likewise supports animations and allows a split up palette of up to 256 colors for each frame. These palette limitations make GIF less suitable for reproducing color photographs and other images with color gradients, but well-suited for simpler images such every bit graphics or logos with solid areas of colour.

GIF images are compressed using the Lempel–Ziv–Welch (LZW) lossless data compression technique to reduce the file size without degrading the visual quality. This compression technique was patented in 1985. Controversy over the licensing understanding between the software patent holder, Unisys, and CompuServe in 1994 spurred the development of the Portable Network Graphics (PNG) standard. Past 2004 all the relevant patents had expired.

History [edit]

CompuServe introduced GIF on 15 June 1987 to provide a color epitome format for their file downloading areas. This replaced their earlier run-length encoding format, which was black and white merely. GIF became popular because it used LZW information pinch. Since this was more efficient than the run-length encoding used by PCX and MacPaint, fairly large images could be downloaded reasonably quickly even with slow modems.

The original version of GIF was chosen 87a.[1] In 1989, CompuServe released an enhanced version, called 89a,[2] which added support for animation delays (multiple images in a stream were already supported in 87a), transparent background colors, and storage of application-specific metadata. The 89a specification also supports incorporating text labels equally text (not embedding them in the graphical data), but equally there is picayune control over display fonts, this feature is non widely used. The two versions tin can be distinguished by looking at the first six bytes of the file (the "magic number" or signature), which, when interpreted equally ASCII, read "GIF87a" and "GIF89a", respectively.

CompuServe encouraged the adoption of GIF by providing downloadable conversion utilities for many computers. By Dec 1987, for instance, an Apple tree IIGS user could view pictures created on an Atari ST or Commodore 64.[3] GIF was one of the first two image formats ordinarily used on Web sites, the other existence the black-and-white XBM.[iv]

In September 1995 Netscape Navigator 2.0 added the power for animated GIFs to loop.

The characteristic of storing multiple images in one file, accompanied by control data, is used extensively on the Web to produce simple animations.

The optional interlacing feature, which stores image browse lines out of order in such a fashion that even a partially downloaded image was somewhat recognizable, also helped GIF's popularity,[5] as a user could abort the download if information technology was non what was required.

In May 2022 Facebook added support for GIF.[6] [seven] In January 2022 Instagram also added GIF stickers to the story mode.[8]

Terminology [edit]

As a noun, the word GIF is found in the newer editions of many dictionaries. In 2012, the American wing of the Oxford University Printing recognized GIF as a verb also, meaning "to create a GIF file", as in "GIFing was the perfect medium for sharing scenes from the Summer Olympics". The press's lexicographers voted it their word of the year, saying that GIFs accept evolved into "a tool with serious applications including research and journalism".[9] [10]

Pronunciation [edit]

A humorous image announcing the launch of a Tumblr account for the White House suggests pronouncing GIF with a hard g.

The creators of the format pronounced the acronym GIF as , with a soft g equally in 'gin'. Wilhite stated that the intended pronunciation deliberately echoes the American peanut butter brand Jif, and CompuServe employees would ofttimes quip "choosy developers choose GIF", a spoof of Jif's television commercials.[11] The word is at present also widely pronounced , with a hard one thousand every bit in 'gift'.[12] In 2017, an informal poll on the programming website Stack Overflow showed some numerical preference for the hard-g pronunciation,[xiii] specially amongst respondents in eastern Europe, though both the soft g and pronouncing each letter individually were found to exist popular in Asia and parts of Africa.[14]

Dictionary.com [fifteen] cites both, indicating equally the main pronunciation, while Cambridge Dictionary of American English [sixteen] offers only the hard-one thousand pronunciation. Merriam-Webster's Collegiate Dictionary [17] and Oxford Dictionaries cite both pronunciations, but identify the hard m first: .[18] [xix] [xx] [21] The New Oxford American Dictionary gave only in its second edition[22] simply updated it to in the tertiary edition.[23]

The disagreement over the pronunciation has led to heated Internet debate. On the occasion of receiving a lifetime achievement accolade at the 2013 Webby Awards ceremony, Wilhite publicly rejected the hard-g pronunciation;[12] [24] [25] his speech led to more than 17,000 posts on Twitter and dozens of news manufactures.[26] The White Firm[12] and the Television receiver program Jeopardy! also entered the debate in 2013.[25]

In February 2020, The J.Yard. Smucker Visitor, the owners of the Jif brand, partnered with the blithe image database and search engine Giphy to release a limited-edition "Jif vs. GIF" (hashtagged equally #JIFvsGIF) jar of peanut butter that had a label humorously declaring the soft-g pronunciation to refer exclusively to the peanut butter, and GIF to be exclusively pronounced with the difficult-g pronunciation.[27]

Usage [edit]

GIFs are suitable for sharp-edged line fine art with a limited number of colors, such as logos. This takes advantage of the format's lossless compression, which favors flat areas of uniform colour with well defined edges.[28] They tin as well exist used to store low-color sprite data for games.[29] GIFs tin can exist used for pocket-size animations and depression-resolution video clips, or every bit reactions in online messaging used to convey emotion and feelings instead of using words. They are popular on social media platforms such as Tumblr, Facebook and Twitter.[ citation needed ]

File format [edit]

Conceptually, a GIF file describes a fixed-sized graphical area (the "logical screen") populated with zilch or more "images". Many GIF files take a single image that fills the entire logical screen. Others split up the logical screen into separate sub-images. The images may also office as animation frames in an animated GIF file, merely again these demand non fill up the entire logical screen.

GIF files start with a fixed-length header ("GIF87a" or "GIF89a") giving the version, followed by a fixed-length Logical Screen Descriptor giving the pixel dimensions and other characteristics of the logical screen. The screen descriptor may besides specify the presence and size of a Global Colour Tabular array (GCT), which follows side by side if nowadays.

Thereafter, the file is divided into segments, each introduced by a 1-byte lookout man:

  • An image (introduced past 0x2C, an ASCII comma ',')
  • An extension block (introduced by 0x21, an ASCII exclamation point '!')
  • The trailer (a single byte of value 0x3B, an ASCII semicolon ';'), which should exist the last byte of the file.

An image starts with a fixed-length Image Descriptor, which may specify the presence and size of a Local Color Table (which follows next if nowadays). The image data follows: one byte giving the fleck width of the unencoded symbols (which must exist at to the lowest degree 2 $.25 wide, even for bi-color images), followed by a linked list of sub-blocks containing the LZW-encoded data.

Extension blocks (blocks that "extend" the 87a definition via a mechanism already divers in the 87a spec) consist of the scout, an additional byte specifying the type of extension, and a linked list of sub-blocks with the extension data. Extension blocks that alter an image (similar the Graphic Control Extension that specifies the optional animation filibuster time and optional transparent background colour) must immediately precede the segment with the image they refer to.

The linked lists used by the image information and the extension blocks consist of series of sub-blocks, each sub-block beginning with a byte giving the number of subsequent data bytes in the sub-block (1 to 255). The serial of sub-blocks is terminated by an empty sub-block (a 0 byte).

This structure allows the file to be parsed even if not all parts are understood. A GIF marked 87a may incorporate extension blocks; the intent is that a decoder can read and display the file without the features covered in extensions it does non sympathize.

The full detail of the file format is covered in the GIF specification.[two]

Palettes [edit]

An example of a GIF image saved with a web-safe palette and dithered using the Floyd–Steinberg method. Due to the reduced number of colors in the image, there are display problems.

GIF is palette-based: the colors used in an image (a frame) in the file have their RGB values divers in a palette table that can hold upwards to 256 entries, and the data for the image refer to the colors by their indices (0–255) in the palette table. The color definitions in the palette tin be fatigued from a color space of millions of shades (224 shades, 8 $.25 for each main), but the maximum number of colors a frame can use is 256. This limitation seemed reasonable when GIF was developed considering few people could beget the hardware to display more colors simultaneously. Unproblematic graphics, line drawings, cartoons, and grey-scale photographs typically need fewer than 256 colors.

Each frame can designate 1 index every bit a "transparent background color": any pixel assigned this index takes on the color of the pixel in the same position from the background, which may have been determined by a previous frame of animation.

Many techniques, collectively called dithering, have been adult to approximate a wider range of colors with a small color palette by using pixels of ii or more colors to gauge in-between colors. These techniques sacrifice spatial resolution to approximate deeper color resolution. While not function of the GIF specification, dithering can be used in images after encoded as GIF images. This is often not an platonic solution for GIF images, both because the loss of spatial resolution typically makes an image look fuzzy on the screen, and because the dithering patterns frequently interfere with the compressibility of the paradigm data, working against GIF's main purpose.

In the early days of graphical web browsers[ when? ], graphics cards with 8-bit buffers (allowing only 256 colors) were common and information technology was fairly common to make GIF images using the websafe palette.[ according to whom? ] This ensured predictable display, just severely limited the selection of colors. When 24-bit color became the norm, palettes could instead exist populated with the optimum colors for individual images.

A pocket-sized color tabular array may suffice for small images, and keeping the color table pocket-sized allows the file to be downloaded faster. Both the 87a and 89a specifications allow color tables of ii north colors for any n from 1 through 8. Most graphics applications volition read and brandish GIF images with whatever of these table sizes; just some do not support all sizes when creating images. Tables of 2, 16, and 256 colors are widely supported.

True colour [edit]

An animated GIF illustrating a technique for displaying more than the typical limit of 256 colors

Although GIF is almost never used for true colour images, information technology is possible to do so.[xxx] [31] A GIF image tin can include multiple image blocks, each of which tin can have its ain 256-color palette, and the blocks can be tiled to create a complete image. Alternatively, the GIF89a specification introduced the idea of a "transparent" color where each image cake can include its ain palette of 255 visible colors plus one transparent color. A consummate image can be created by layering image blocks with the visible portion of each layer showing through the transparent portions of the layers above.

To render a full-color image as a GIF, the original prototype must be broken downwardly into smaller regions having no more than 255 or 256 dissimilar colors. Each of these regions is and then stored as a carve up epitome block with its own local palette and when the image blocks are displayed together (either past tiling or by layering partially transparent image blocks), the complete, full-color image appears. For example, breaking an image into tiles of 16 by 16 pixels (256 pixels in total) ensures that no tile has more than the local palette limit of 256 colors, although larger tiles may be used and like colors merged resulting in some loss of color data.[xxx]

Since each prototype block can have its ain local color table, a GIF file having many image blocks can be very big, limiting the usefulness of full-color GIFs.[31] Additionally, not all GIF rendering programs handle tiled or layered images correctly. Many rendering programs interpret tiles or layers as blitheness frames and display them in sequence as an animation[30] with nearly spider web browsers automatically displaying the frames with a delay time of 0.1 seconds or more.[32] [33] [ better source needed ]

Instance GIF file [edit]

Sample epitome (enlarged), actual size 3 pixels wide by 5 loftier

Bytes Dh to 30Ch in the example define a palette of 256 colors.

Microsoft Paint saves a small blackness-and-white image as the post-obit GIF file. Pigment does not brand optimal utilise of GIF; due to the unnecessarily large color table (storing a full 256 colors instead of the used 2) and symbol width, this GIF file is not an efficient representation of the 15-pixel image (illustrated enlarged higher up).

Although the Graphic Command Extension block declares color alphabetize 16 (hexadecimal 10) to be transparent, that index is not used in the image. The only color indexes appearing in the image information are decimal 40 and 255, which the Global Color Table maps to black and white, respectively.

Note that the hex numbers in the following tables are in fiddling-endian byte society, as the format specification prescribes.

Table of example GIF prototype values
Byte # (hex) Hexadecimal Text or value Significant
0 47 49 46 38 39 61 GIF89a Header
6 03 00 3 Logical screen width
eight 05 00 5 Logical screen superlative
A F7 GCT follows for 256 colors with resolution 3 ×8 bits/primary, the lowest 3 bits represent the fleck depth minus 1, the highest true fleck means that the GCT is present
B 00 0 Groundwork color: #000000, black
C 00 0 Default pixel aspect ratio, 0:0
D 00 00 00
R (red) G (green) B (blue)
0 0 0
Global Colour Tabular array, color #0: #000000, blackness
10 lxxx 00 00
R (blood-red) G (greenish) B (blue)
128 0 0
Global Colour Table, colour #ane: transparent bit, not used in paradigm
... ... ... Global Color Tabular array extends to 30A
30A FF FF FF
R (red) G (green) B (blue)
255 255 255
Global Colour Table, color #255: #ffffff, white
30D 21 F9 Graphic Command Extension (comment fields precede this in nearly files)
30F 04 four Corporeality of GCE data, 4 bytes
310 01 Transparent background color; this is a scrap field, the lowest bit signifies transparency
311 00 00 Delay for animation in hundredths of a second; not used
313 10 16 Color number of transparent pixel in GCT
314 00 Terminate of GCE block
315 2C Epitome descriptor
316 00 00 00 00 (0, 0) North-westward corner position of image in logical screen
31A 03 00 05 00 (3, five) Epitome width and height in pixels
31E 00 0 Local color table bit, 0 means none
31F 08 8 Commencement of image, LZW minimum code size
320 0B 11 Amount of LZW encoded image follow, 11 bytes
321 00 51 FC 1B 28 70 A0 C1 83 01 01 <image data> 11 bytes of image data, see field 320
32C 00 0 Terminate of image information block
32D 3B File termination

Image coding [edit]

The prototype pixel information, scanned horizontally from top left, are converted by LZW encoding to codes that are then mapped into bytes for storing in the file. The pixel codes typically don't friction match the 8-bit size of the bytes, and then the codes are packed into bytes by a "little-Endian" scheme: the least significant bit of the start lawmaking is stored in the least pregnant fleck of the first byte, higher society $.25 of the code into higher order bits of the byte, spilling over into the low order bits of the next byte as necessary. Each subsequent lawmaking is stored starting at the to the lowest degree pregnant bit not already used.

This byte stream is stored in the file as a series of "sub-blocks". Each sub-block has a maximum length 255 bytes and is prefixed with a byte indicating the number of data bytes in the sub-block. The series of sub-blocks is terminated past an empty sub-cake (a single 0 byte, indicating a sub-block with 0 data bytes).

For the sample prototype in a higher place the reversible mapping betwixt ix-bit codes and bytes is shown below.

Reversible mapping
ix-bit code Binary Bytes (hexadecimal)
100 |00000000| 00
028 |0101000|1 51
0FF |111111|00 FC
103 |00011|011 1B
102 |0010|1000 28
103 |011|10000 70
106 |10|100000 A0
107 |1|1000001 C1
|10000011 83
101 |00000001 01
|0000000|1 01

A slight compression is axiomatic: pixel colors divers initially by 15 bytes are exactly represented by 12 lawmaking bytes including control codes. The encoding process that produces the nine-bit codes is shown beneath. A local cord accumulates pixel color numbers from the palette, with no output action as long every bit the local cord tin be found in a lawmaking tabular array. In that location is special treatment of the get-go two pixels that make it before the tabular array grows from its initial size past additions of strings. After each output code, the local string is initialized to the latest pixel colour (that could not exist included in the output code).

          Table           nine-bit                      cord --> code      lawmaking    Action                    #0 | 000h               Initialize root table of 9-bit codes                     palette  |  :                      colors  |  :                         #255 | 0FFh                          clr | 100h                          stop | 101h                              |            100h     Clear Pixel          Local         | color Palette  string        | Blackness  #40     28            |            028h     1st pixel e'er to output WHITE  #255    FF            |                     String found in tabular array                   28 FF      | 102h                Always add 1st string to tabular array                FF            |                     Initialize local string WHITE  #255    FF FF         |                     Cord not establish in table                              |            0FFh     - output code for previous cord                   FF FF      | 103h                - add latest cord to tabular array                FF            |                     - initialize local string WHITE  #255    FF FF         |                     String found in tabular array BLACK  #40     FF FF 28      |                     Cord not constitute in table                              |            103h     - output code for previous string                   FF FF 28   | 104h                - add latest string to tabular array                28            |                     - initialize local cord WHITE  #255    28 FF         |                     String institute in table WHITE  #255    28 FF FF      |                     Cord not found in table                              |            102h     - output code for previous cord                   28 FF FF   | 105h                - add together latest string to table                FF            |                     - initialize local string WHITE  #255    FF FF         |                     String found in table WHITE  #255    FF FF FF      |                     String not found in table                              |            103h     - output lawmaking for previous string                   FF FF FF   | 106h                - add latest string to table                FF            |                     - initialize local string WHITE  #255    FF FF         |                     String found in table WHITE  #255    FF FF FF      |                     String found in tabular array WHITE  #255    FF FF FF FF   |                     String not found in table                              |            106h     - output code for previous string                   FF FF FF FF| 107h                - add latest string to table                FF            |                     - initialize local string WHITE  #255    FF FF         |                     String found in tabular array WHITE  #255    FF FF FF      |                     String plant in table WHITE  #255    FF FF FF FF   |                     String found in table                                                    No more pixels                                           107h     - output lawmaking for final cord                                           101h     Finish        

For clarity the table is shown above every bit being built of strings of increasing length. That scheme can function merely the tabular array consumes an unpredictable corporeality of memory. Memory tin be saved in practice past noting that each new string to be stored consists of a previously stored string augmented by ane character. It is economical to shop at each address only ii words: an existing address and one grapheme.

The LZW algorithm requires a search of the table for each pixel. A linear search through up to 4096 addresses would make the coding slow. In practice the codes tin can exist stored in social club of numerical value; this allows each search to be done by a SAR (Successive Approximation Register, as used in some ADCs), with just 12 magnitude comparisons. For this efficiency an actress table is needed to convert betwixt codes and actual retentiveness addresses; the extra table upkeeping is needed only when a new lawmaking is stored which happens at much less than pixel charge per unit.

Epitome decoding [edit]

Decoding begins by mapping the stored bytes back to 9-flake codes. These are decoded to recover the pixel colors as shown below. A table identical to the ane used in the encoder is built by adding strings by this rule:

Is incoming code plant in table?
Yes add cord for local code followed by first byte of cord for incoming code
No add together string for local code followed by copy of its ain offset byte
          shift          9-fleck ----> Local      Tabular array                 Pixel                      lawmaking        lawmaking   code --> cord   Palette color  Action                    100h               000h  | #0                       Initialize root table of 9-fleck codes                     :    | palette                     :    | colors                    0FFh  | #255                    100h  | clr                    101h  | end 028h                     |             #40          BLACK          Decode 1st pixel 0FFh        028h         |                           Incoming code found in table                          |             #255          WHITE          - output string from table                    102h  | 28 FF                     - add to table 103h        0FFh         |                           Incoming code not found in table                    103h  | FF FF                     - add to table                          |                           - output string from table                          |             #255          WHITE          |             #255          WHITE          102h        103h         |                           Incoming lawmaking found in tabular array                          |                           - output string from table                          |             #40          BLACK          |             #255          WHITE          104h  | FF FF 28                  - add to table 103h        102h         |                           Incoming lawmaking found in table                          |                           - output cord from table                          |             #255          WHITE          |             #255          WHITE          105h  | 28 FF FF                  - add together to table 106h        103h         |                           Incoming code non found in table                    106h  | FF FF FF                  - add together to tabular array                          |                           - output string from table                          |             #255          WHITE          |             #255          WHITE          |             #255          WHITE          107h        106h         |                           Incoming lawmaking not found in table                    107h  | FF FF FF FF               - add together to table                          |                           - output string from tabular array                          |             #255          WHITE          |             #255          WHITE          |             #255          WHITE          |             #255          WHITE          101h                     |                           End        

LZW code lengths [edit]

Shorter lawmaking lengths can be used for palettes smaller than the 256 colors in the instance. If the palette is but 64 colors (so color indexes are six bits broad), the symbols can range from 0 to 63, and the symbol width tin be taken to be 6 bits, with codes starting at vii bits. In fact, the symbol width need not match the palette size: equally long as the values decoded are always less than the number of colors in the palette, the symbols can be whatever width from 2 to 8, and the palette size any power of 2 from 2 to 256. For example, if just the first 4 colors (values 0 to iii) of the palette are used, the symbols tin can exist taken to exist ii bits broad with codes starting at three $.25.

Conversely, the symbol width could be fix at eight, fifty-fifty if only values 0 and 1 are used; these data would only require a two-color tabular array. Although there would be no point in encoding the file that way, something similar typically happens for bi-color images: the minimum symbol width is 2, even if only values 0 and 1 are used.

The code tabular array initially contains codes that are one bit longer than the symbol size in order to conform the two special codes clr and end and codes for strings that are added during the process. When the table is total the code length increases to give infinite for more strings, upwards to a maximum code 4095 = FFF(hex). Equally the decoder builds its table it tracks these increases in code length and it is able to unpack incoming bytes accordingly.

Uncompressed GIF [edit]

A 46×46 uncompressed GIF with 7-bit symbols (128 colors, 8-bit codes). Click on the paradigm for an explanation of the code.

The GIF encoding process can exist modified to create a file without LZW compression that is however viewable as a GIF prototype. This technique was introduced originally as a way to avoid patent infringement. Uncompressed GIF can also be a useful intermediate format for a graphics programmer because individual pixels are attainable for reading or painting. An uncompressed GIF file tin can be converted to an ordinary GIF file just by passing it through an prototype editor.

The modified encoding method ignores edifice the LZW table and emits merely the root palette codes and the codes for CLEAR and End. This yields a simpler encoding (a ane-to-1 correspondence between lawmaking values and palette codes) but sacrifices all of the compression: each pixel in the epitome generates an output code indicating its color index. When processing an uncompressed GIF, a standard GIF decoder volition not be prevented from writing strings to its dictionary table, only the code width must never increment since that triggers a different packing of bits to bytes.

If the symbol width is n, the codes of width n+1 fall naturally into two blocks: the lower block of 2 due north codes for coding single symbols, and the upper block of ii n codes that volition be used by the decoder for sequences of length greater than one. Of that upper block, the outset two codes are already taken: 2 due north for Clear and 2 north + ane for Finish. The decoder must also be prevented from using the last code in the upper block, two n+1 − 1, because when the decoder fills that slot, it will increase the code width. Thus in the upper block there are 2 due north − 3 codes available to the decoder that won't trigger an increase in lawmaking width. Because the decoder is always one stride behind in maintaining the tabular array, information technology does not generate a table entry upon receiving the beginning lawmaking from the encoder, but volition generate i for each succeeding code. Thus the encoder can generate 2 n − 2 codes without triggering an increase in code width. Therefore, the encoder must emit actress CLEAR codes at intervals of 2 north − ii codes or less to make the decoder reset the coding dictionary. The GIF standard allows such actress CLEAR codes to be inserted in the image data at any fourth dimension. The composite data stream is partitioned into sub-blocks that each carry from 1 to 255 bytes.

For the sample 3×5 paradigm above, the following ix-bit codes represent "clear" (100) followed past paradigm pixels in scan lodge and "end" (101).

100 028 0FF 0FF 0FF 028 0FF 0FF 0FF 0FF 0FF 0FF 0FF 0FF 0FF 0FF 101        

After the above codes are mapped to bytes, the uncompressed file differs from the compressed file thus:

Byte # (hex) Hexadecimal Text or value Significant
320 14 20 xx bytes uncompressed paradigm information follow
321 00 51 FC FB F7 0F C5 BF 7F FF Fe FD FB F7 EF DF BF 7F 01 01
335 00 0 End of epitome data

Compression example [edit]

The trivial instance of a large epitome of solid color demonstrates the variable-length LZW pinch used in GIF files.

Sample compression of a GIF file
Code Pixels Notes
No.Ni ValueNi + 256 Length(bits) This codeNi Accumulated Ni(Ni + i) / two Relations using Ni simply apply to same-color pixels until coding table is full.
0 100h ix Clear code tabular array
1 FFh 1 1 Peak left pixel color chosen as the highest index of a 256-color palette
2 102h 2 3
3⋮255 103h⋮1FFh iii⋮255 6⋮32640 Terminal ix-chip lawmaking
256⋮767 200h⋮3FFh 10 256⋮767 32896⋮294528 Last x-bit code
768⋮1791 400h⋮7FFh xi 768⋮1791 295296⋮1604736 Concluding eleven-bit lawmaking
1792⋮3839 800h⋮FFFh 12 1792⋮3839 1606528⋮7370880 Lawmaking tabular array full
FFFh 3839 The maximum code may repeat for more than same-color pixels.Overall information compression asymptotically approaches 3839 × 8 / 12 = 2559+ 1 / three
101h Stop of image information

The code values shown are packed into bytes which are and then packed into blocks of up to 255 bytes. A block of image information begins with a byte that declares the number of bytes to follow. The last block of information for an image is marked past a cipher cake-length byte.

Interlacing [edit]

The GIF Specification allows each image inside the logical screen of a GIF file to specify that it is interlaced; i.e., that the social club of the raster lines in its data block is not sequential. This allows a partial display of the paradigm that can be recognized earlier the full epitome is painted.

An interlaced image is divided from acme to bottom into strips eight pixels high, and the rows of the image are presented in the following social club:

  • Laissez passer ane: Line 0 (the top-most line) from each strip.
  • Pass two: Line iv from each strip.
  • Laissez passer 3: Lines 2 and 6 from each strip.
  • Laissez passer 4: Lines i, 3, 5, and vii from each strip.

The pixels inside each line are not interlaced, but presented consecutively from left to correct. As with not-interlaced images, in that location is no break between the data for ane line and the information for the side by side. The indicator that an image is interlaced is a bit set in the corresponding Image Descriptor cake.

Animated GIF [edit]

A GIF blitheness fabricated of ii photos, one morphing into the other

A simple gif with 3 pictures of Pigeons that are repeated indefinitely.

Although GIF was not designed as an animation medium, its ability to store multiple images in one file naturally suggested using the format to store the frames of an blitheness sequence. To facilitate displaying animations, the GIF89a spec added the Graphic Control Extension (GCE), which allows the images (frames) in the file to exist painted with time delays, forming a video clip. Each frame in an blitheness GIF is introduced by its own GCE specifying the time delay to wait later on the frame is drawn. Global information at the outset of the file applies past default to all frames. The data is stream-oriented, so the file offset of the get-go of each GCE depends on the length of preceding information. Inside each frame the LZW-coded paradigm information is bundled in sub-blocks of up to 255 bytes; the size of each sub-block is declared by the byte that precedes it.

By default, an blitheness displays the sequence of frames but once, stopping when the concluding frame is displayed. To enable an animation to loop, Netscape in the 1990s used the Application Extension block (intended to permit vendors to add together awarding-specific information to the GIF file) to implement the Netscape Application Block (NAB).[34] This cake, placed immediately before the sequence of animation frames, specifies the number of times the sequence of frames should exist played (1 to 65535 times) or that information technology should repeat continuously (nil indicates loop forever). Support for these repeating animations first appeared in Netscape Navigator version ii.0, and then spread to other browsers.[35] Nearly browsers now recognize and back up NAB, though it is not strictly office of the GIF89a specification.

The following instance shows the construction of the animation file Rotating earth (big).gif shown (every bit a thumbnail) in the article's infobox.

Construction of GIF
Byte # (hex) Hexadecimal Text or value Meaning
0 47 49 46 38 39 61 GIF89a Logical Screen Descriptor
6 90 01 400 Width in pixels
viii 90 01 400 Height in pixels
A F7 GCT follows for 256 colors with resolution three ×viii bits/primary
B 00 0 Background color: #000000, black
C 00 0 Default pixel aspect ratio, 0:0
D 00 Global Color Table
30D 21 FF Application Extension
30F 0B xi Size of block including awarding name and verification bytes (ever 11)
310 4E 45 54 53 43 41 fifty 45 32 2E xxx NETSCAPE2.0 eight-byte awarding name plus 3 verification bytes
31B 03 3 Number of bytes in the following sub-block
31C 01 1 Index of the current data sub-block (always ane for the NETSCAPE block)
31D FF FF 65535 Unsigned number of repetitions
31F 00 Cease of the sub-block chain for the Application Extension block
320 21 F9 Graphic Control Extension for frame #ane
322 04 4 Number of bytes (4) in the electric current sub-block
323 04
                    000..... ...001.. ......0. .......0                  
(broken into sections for easier reading)
Reserved, five lower $.25 are scrap field
Disposal method 1: do not dispose
No user input
Transparent colour, 0 means non given
324 09 00 9 Frame delay: 0.09 2nd delay earlier painting next frame
326 FF Transparent color index (unused in this frame)
327 00 End of sub-cake chain for Graphic Control Extension block
328 2C Prototype Descriptor of frame #one
329 00 00 00 00 (0, 0) North-west corner position of image in logical screen: (0, 0)
32D ninety 01 90 01 (400, 400) Frame width and summit: 400 ×400 pixels
331 00 0 Local color table: 0 means none & no interlacing
332 08 8 Minimum LZW lawmaking size for Image Data of frame #1
333 FF 255 Number of bytes of LZW prototype data in the following sub-cake: 255 bytes
334 ... <image data> Epitome data, 255 bytes
433 FF 255 Number of bytes of LZW prototype data in the following sub-block, 255 bytes
434 ... <paradigm data> Image data, 255 bytes
Repeat for next blocks
92C0 00 Cease of sub-block chain for this frame
92C1 21 F9 Graphic Control Extension for frame #two
Repeat for next frames
EDABD 21 F9 Graphic Command Extension for frame #44
Image information and information for frame #44
F48F5 3B Trailer: Terminal byte in the file, signaling EOF

The animation filibuster for each frame is specified in the GCE in hundredths of a 2d. Some economic system of data is possible where a frame need simply rewrite a portion of the pixels of the brandish, because the Paradigm Descriptor tin can ascertain a smaller rectangle to exist rescanned instead of the whole image. Browsers or other displays that do not support animated GIFs typically show just the starting time frame.

The size and color quality of animated GIF files can vary significantly depending on the application used to create them. Strategies for minimizing file size include using a common global color table for all frames (rather than a complete local color table for each frame) and minimizing the number of pixels covered in successive frames (so that only the pixels that modify from 1 frame to the side by side are included in the latter frame). More advanced techniques involve modifying colour sequences to better match the existing LZW dictionary, a grade of lossy compression. Merely packing a series of independent frame images into a blended animation tends to yield big file sizes. Tools are available to minimize the file size given an existing GIF.

Metadata [edit]

Metadata can exist stored in GIF files every bit a comment cake, a patently text cake, or an awarding-specific application extension cake. Several graphics editors use unofficial awarding extension blocks to include the data used to generate the image, so that it can exist recovered for farther editing.

All of these methods technically require the metadata to be broken into sub-blocks so that applications tin navigate the metadata cake without knowing its internal structure.

The Extensible Metadata Platform (XMP) metadata standard introduced an unofficial but now widespread "XMP Data" awarding extension block for including XMP data in GIF files.[36] Since the XMP data is encoded using UTF-8 without NUL characters, there are no 0 bytes in the data. Rather than break the information into formal sub-blocks, the extension block terminates with a "magic trailer" that routes any application treating the data every bit sub-blocks to a final 0 byte that terminates the sub-cake chain.

Unisys and LZW patent enforcement [edit]

In 1977 and 1978, Jacob Ziv and Abraham Lempel published a pair of papers on a new grade of lossless data-compression algorithms, now collectively referred to every bit LZ77 and LZ78. In 1983, Terry Welch adult a fast variant of LZ78 which was named Lempel–Ziv–Welch (LZW).[37] [38]

Welch filed a patent application for the LZW method in June 1983. The resulting patent, US4558302,[39] granted in December 1985, was assigned to Sperry Corporation who later merged with Burroughs Corporation in 1986 and formed Unisys.[37] Further patents were obtained in the United kingdom, France, Frg, Italian republic, Japan and Canada.

In addition to the above patents, Welch'due south 1983 patent also includes citations to several other patents that influenced it, including ii 1980 Japanese patents from NEC'south Jun Kanatsu,[40] [41] U.Due south. Patent 4,021,782 (1974) from John S. Hoerning, U.South. Patent four,366,551 (1977) from Klaus E. Holtz, and a 1981 High german patent from Karl Eckhart Heinz[42] .[43]

In June 1984, an article by Welch was published in the IEEE magazine which publicly described the LZW technique for the get-go time.[44] LZW became a pop information compression technique and, when the patent was granted, Unisys entered into licensing agreements with over a hundred companies.[37] [45]

The popularity of LZW led CompuServe to choose information technology as the compression technique for their version of GIF, developed in 1987. At the time, CompuServe was not aware of the patent.[37] Unisys became aware that the version of GIF used the LZW pinch technique and entered into licensing negotiations with CompuServe in January 1993. The subsequent understanding was announced on 24 December 1994.[38] Unisys stated that they expected all major commercial on-line data services companies employing the LZW patent to license the technology from Unisys at a reasonable charge per unit, but that they would not crave licensing, or fees to be paid, for non-commercial, non-profit GIF-based applications, including those for employ on the on-line services.[45]

Post-obit this announcement, in that location was widespread condemnation of CompuServe and Unisys, and many software developers threatened to end using GIF. The PNG format (run into below) was developed in 1995 as an intended replacement.[37] [38] [44] However, obtaining support from the makers of Spider web browsers and other software for the PNG format proved difficult and it was not possible to replace GIF, although PNG has gradually increased in popularity.[37] Therefore, GIF variations without LZW compression were developed. For case the libungif library, based on Eric S. Raymond'south giflib, allows creation of GIFs that followed the information format but avoided the pinch features, thus avoiding use of the Unisys LZW patent.[46] A 2001 Dr. Dobb's article described another culling to LZW pinch, based on square roots.[47]

In August 1999, Unisys changed the details of their licensing practice, announcing the option for owners of certain not-commercial and individual websites to obtain licenses on payment of a one-fourth dimension license fee of $5000 or $7500.[48] Such licenses were not required for website owners or other GIF users who had used licensed software to generate GIFs. Withal, Unisys was subjected to thousands of online attacks and calumniating emails from users assertive that they were going to be charged $5000 or sued for using GIFs on their websites.[49] Despite giving free licenses to hundreds of non-turn a profit organizations, schools and governments, Unisys was completely unable to generate any adept publicity and connected to be condemned by individuals and organizations such equally the League for Programming Freedom who started the "Burn All GIFs" campaign in 1999.[l] [51]

The United States LZW patent expired on twenty June 2003.[52] The analogue patents in the Great britain, France, Federal republic of germany and Italy expired on 18 June 2004, the Japanese patents expired on 20 June 2004, and the Canadian patent expired on 7 July 2004.[52] Consequently, while Unisys has further patents and patent applications relating to improvements to the LZW technique,[52] LZW itself (and consequently GIF) accept been gratuitous to use since July 2004.[53]

Alternatives [edit]

PNG [edit]

Portable Network Graphics (PNG) was designed as a replacement for GIF in guild to avoid infringement of Unisys' patent on the LZW pinch technique.[37] PNG offers amend compression and more features than GIF,[54] blitheness being the just meaning exception. PNG is more than suitable than GIF in instances where true-color imaging and alpha transparency are required.

Although support for PNG format came slowly, new web browsers support PNG. Older versions of Cyberspace Explorer do non support all features of PNG. Versions 6 and before exercise non back up alpha channel transparency without using Microsoft-specific HTML extensions.[55] Gamma correction of PNG images was not supported before version eight, and the display of these images in earlier versions may have the incorrect tint.[56]

For identical 8-bit (or lower) image data, PNG files are typically smaller than the equivalent GIFs, due to the more efficient compression techniques used in PNG encoding.[57] Complete support for GIF is complicated chiefly past the circuitous canvas structure it allows, though this is what enables the compact animation features.

Animation formats [edit]

Videos resolve many issues that GIFs present through common usage on the web. They include drastically smaller file sizes, the ability to surpass the viii-bit colour brake, and improve frame-handling and compression through codecs. Virtually universal support for the GIF format in spider web browsers and a lack of official support for video in the HTML standard acquired GIF to rise to prominence for the purpose of displaying short video-similar files on the web.

MNG ("Multiple-epitome Network Graphics") was originally developed every bit a PNG-based solution for animations. MNG reached version 1.0 in 2001, just few applications support information technology.

In 2006, an extension to the PNG format chosen APNG ("Animated Portable Network Graphics") was proposed as alternative to the MNG format past Mozilla. APNG is supported by almost browsers as of 2019.[58] APNG provide the power to animate PNG files, while retaining backwards compatibility in decoders that cannot understand the animation chunk (unlike MNG). Older decoders will simply return the first frame of the animation. The PNG group officially rejected APNG every bit an official extension on xx April 2007.[59] At that place have been several subsequent proposals for a simple animated graphics format based on PNG using several unlike approaches.[60] Nonetheless, Blithe Portable Network Graphics is nonetheless under development by Mozilla and is supported in Firefox 3[61] [62] while MNG support was dropped.[63] [64] APNG is currently supported by all major web browsers including Chrome since version 59.0 and Opera and Firefox and Border.

Embedded Adobe Flash objects and MPEG files were used on some websites to display simple video, but required the use of an boosted browser plugin. WebM and WebP are in development and are supported by some spider web browsers.[65] Other options for web animation include serving individual frames using AJAX, or animating SVG images using JavaScript or SMIL ("Synchronized Multimedia Integration Language").[ commendation needed ]

With the introduction of widespread support of the HTML5 video (<video>) tag in most web browsers, some websites use a looped version of the video tag generated past JavaScript functions. This gives the advent of a GIF, merely with the size and speed advantages of compressed video. Notable examples are Gfycat and Imgur and their GIFV metaformat, which is really a video tag playing a looped MP4 or WebM compressed video.[66]

High Efficiency Image File Format (HEIF) is an epitome file format, finalized in 2015, which uses a detached cosine transform (DCT) lossy compression algorithm based on the HEVC video format, and related to the JPEG prototype format. In dissimilarity to JPEG, HEIF supports blitheness.[67] Compared to the GIF format, which lacks DCT compression, HEIF allows significantly more efficient compression. HEIF stores more information and produces higher-quality animated images at a small fraction of an equivalent GIF's size.[68]

VP9 only supports alpha compositing with four:2:0 chroma subsampling[69] in the YUVA420 pixel format, which may be unsuitable for GIFs that combine transparency with rasterised vector graphics with fine color details.

The AV1 codec can also be used either every bit a video or a sequenced paradigm.

Uses [edit]

In April 2014, 4chan added support for silent WebM videos that are nether 3 MB in size and 2 min in length,[seventy] [71] and in Oct 2014, Imgur started converting any GIF files uploaded to the site to video and giving the link to the HTML player the advent of an bodily file with a .gifv extension.[72] [73]

In January 2016, Telegram started re-encoding all GIFs to MPEG-4 videos that "require up to 95% less disk infinite for the aforementioned image quality."[74]

See as well [edit]

  • AVIF
  • Cinemagraph, a partially animated photograph often in GIF
  • Comparing of graphics file formats
  • Comparison of layout engines (graphics)
  • GIF fine art, a grade of digital art associated with GIF
  • GIFBuilder, early on animated GIF cosmos program
  • GNU plotutils (supports pseudo-GIF, which uses run-length encoding rather than LZW)
  • Microsoft GIF Animator, historic program to create uncomplicated blithe GIFs
  • Software patent

References [edit]

  1. ^ a b c "Graphics Interchange Format, Version 87a". W3C. fifteen June 1987. Archived from the original on 25 December 2018. Retrieved 13 October 2012.
  2. ^ a b c "Graphics Interchange Format, Version 89a". W3C. 31 July 1990. Archived from the original on 25 December 2018. Retrieved six March 2009.
  3. ^ "Online Art". Compute!'s Apple Applications. December 1987. p. 10. Retrieved xiv September 2016.
  4. ^ Holdener III, Anthony (2008). Ajax: The Definitive Guide: Interactive Applications for the Web. O'Reilly Media. ISBN978-0596528386.
  5. ^ Furht, Borko (2008). Encyclopedia of Multimedia. Springer. ISBN978-0387747248.
  6. ^ McHugh, Molly (29 May 2015). "You Can Finally, Actually, Really, Truly Post GIFs on Facebook". Wired. wired.com. Archived from the original on 30 May 2015. Retrieved 29 May 2015.
  7. ^ Perez, Sarah (29 May 2015). "Facebook Confirms It Will Officially Support GIFs". techcrunch.com. Archived from the original on 30 May 2015. Retrieved 29 May 2015.
  8. ^ "Introducing GIF Stickers". Instagram. 23 January 2018. Archived from the original on 12 December 2019. Retrieved xix September 2019.
  9. ^ "Oxford Dictionaries U.s. Word of the Year 2012". OxfordWords blog. Oxford American Dictionaries. 13 Nov 2012. Archived from the original on three August 2014. Retrieved 1 May 2013.
  10. ^ Flood, Alison (27 April 2013). "Gif is America's give-and-take of the yr? At present that's what I call an omnishambles". Books weblog. The Guardian. London. Archived from the original on 1 December 2016. Retrieved i May 2013.
  11. ^ Olsen, Steve. "The GIF Pronunciation Page". Archived from the original on 25 Feb 2009. Retrieved 6 March 2009.
  12. ^ a b c "Gif's inventor says ignore dictionaries and say 'Jif'". BBC News. 22 May 2013. Archived from the original on 27 June 2018. Retrieved 22 May 2013.
  13. ^ "Stack Overflow Developer Survey 2017". 2017. Archived from the original on 29 May 2019. Retrieved nineteen August 2018.
  14. ^ "How do you lot pronounce "GIF"?". The Economist. Archived from the original on 5 January 2018. Retrieved 4 January 2018.
  15. ^ "GIF". The American Heritage Abbreviations Dictionary, Third Edition. Houghton Mifflin Company. 2005. Archived from the original on 22 August 2011. Retrieved 15 Apr 2007.
  16. ^ "GIF". The Cambridge Dictionary of American English. Cambridge University Press. Archived from the original on 27 Feb 2014. Retrieved 19 February 2014.
  17. ^ "Gif - Definition from the Merriam-Webster Lexicon". Merriam-Webster Dictionary. Merriam-Webster, Incorporated. Archived from the original on 22 October 2013. Retrieved 6 June 2013.
  18. ^ "GIF". Oxford Dictionaries Online. Oxford University Printing. Archived from the original on 12 October 2014. Retrieved 7 October 2014.
  19. ^ "gif noun - Definition, pictures, pronunciation and usage notes | Oxford Advanced Learner's Dictionary". Oxford Learner's Dictionaries. Archived from the original on 24 November 2020. Retrieved 6 February 2021.
  20. ^ "GIF | Definition of GIF by Oxford Dictionary". Lexico. Archived from the original on xiii Feb 2021. Retrieved 6 February 2021.
  21. ^ Stevenson, Angus, ed. (2010). Oxford Dictionary of English (third ed.). Oxford University Press. ISBN9780199571123. OCLC 729551189.
  22. ^ The New Oxford American Dictionary (2d ed.). Oxford University Printing. 2005. p. 711.
  23. ^ The New Oxford American Dictionary (third ed.). 2012. (part of the Macintosh built-in dictionaries).
  24. ^ O'Leary, Amy (21 May 2013). "An Honour for the Creator of the GIF". The New York Times. Archived from the original on 22 May 2013. Retrieved 22 May 2013.
  25. ^ a b Rothberg, Daniel (iv December 2013). "'Jeopardy' wades into 'GIF' pronunciation battle". Los Angeles Times. Archived from the original on six Dec 2013. Retrieved four Dec 2013.
  26. ^ O'Leary, Amy (23 May 2013). "Battle Over 'GIF' Pronunciation Erupts". The New York Times. Archived from the original on xvi Dec 2013. Retrieved 5 December 2013.
  27. ^ Valinsky, Hashemite kingdom of jordan (February 25, 2020). "Jif settles the great debate with a GIF peanut butter jar". CNN. Archived from the original on February 25, 2020. Retrieved February 25, 2020.
  28. ^ Marur, D.R.; Bhaskar, V. (March 2012). "Comparing of platform contained electronic certificate distribution techniques". Devices, Circuits and Systems (ICDCS). International Conference on Devices, Circuits and Systems (ICDCS). Karunya University; Coimbatore, India: IEEE. pp. 297–301. doi:10.1109/ICDCSyst.2012.6188724. ISBN9781457715457. ;
  29. ^ Due south. Mentum; D. Iverson; O. Campesato; P. Trani (2011). Pro Android Flash (PDF). New York: Apress. p. 350. ISBN9781430232315. Archived (PDF) from the original on 2 April 2015. Retrieved eleven March 2015.
  30. ^ a b c Andreas Kleinert (2007). "GIF 24 Bit (truecolor) extensions". Archived from the original on xvi March 2012. Retrieved 23 March 2012.
  31. ^ a b Philip Howard. "True-Color GIF Example". Archived from the original on 22 February 2015. Retrieved 23 March 2012.
  32. ^ "Nullsleep - Jeremiah Johnson - Animated GIF Minimum Frame Delay Browser Compatibility Study". Archived from the original on 10 Oct 2014. Retrieved 26 May 2015.
  33. ^ "They're different! How to match the animation rate of gif files accross [sic] browsers". Developer's Blog. 14 Feb 2012. Archived from the original on ane Feb 2017. Retrieved fifteen June 2017.
  34. ^ Royal Frazier. "All About GIF89a". Archived from the original on eighteen April 1999. Retrieved 7 January 2013.
  35. ^ Scott Walter (1996). Web Scripting Hush-hush Weapons. Que Publishing. ISBN0-7897-0947-3.
  36. ^ "XMP Specification Part 3: Storage in Files" (PDF). Adobe. 2016. pp. 11–12. Archived (PDF) from the original on 25 February 2018. Retrieved 16 Baronial 2018.
  37. ^ a b c d e f g Greg Roelofs. "History of the Portable Network Graphics (PNG) Format". Archived from the original on 7 March 2012. Retrieved 23 March 2012.
  38. ^ a b c Stuart Caie. "Distressing day... GIF patent expressionless at twenty". Archived from the original on 10 February 2012. Retrieved 23 March 2012.
  39. ^ The states 4558302, Welch, Terry A., published 1985-12-10, assigned to Sperry Corp.
  40. ^ JP patent S5719857A, Kanatsu, Jiyun, "Data compression storage device", published 1982-02-02, assigned to Japan Electric Corp.
  41. ^ JP patent S57101937A, Kanatsu, Jiyun, "Data storage device", published 1986-twenty-24, assigned to Japan Electric Corp.
  42. ^ DE patent 3118676, Eckhart, Heinz Karl, "Verfahren zur Kompression redundanter Folgen serieller Datenelemente [Method for compressing redundant sequences of serial data elements]", published 1982-12-02
  43. ^ U.Due south. Patent 4,558,302
  44. ^ a b "The GIF Controversy: A Software Developer's Perspective". Archived from the original on 23 August 2016. Retrieved 26 May 2015.
  45. ^ a b "Unisys Clarifies Policy Regarding Patent Use in On-Line Service Offerings". Archived from the original on 7 February 2007. – archived past League for Programming Liberty
  46. ^ "Libungif". Archived from the original on 13 April 2015. Retrieved 26 May 2015.
  47. ^ Cargill, Tom (1 October 2001). "Replacing a Lexicon with a Square Root". Dr. Dobb'south Periodical. Archived from the original on 28 June 2017. Retrieved 20 Jan 2017.
  48. ^ "LZW Software and Patent Data". Archived from the original on 8 June 2009. Retrieved 31 January 2007. – clarification of two September 1999
  49. ^ Unisys Not Suing (most) Webmasters for Using GIFs Archived x May 2022 at the Wayback Machine – Slashdot investigation into the controversy
  50. ^ "Burn All GIFs 24-hour interval". Archived from the original on 13 October 1999.
  51. ^ Burn All GIFs Archived three Feb 2007 at the Wayback Automobile – A project of the League for Programming Freedom (latest version)
  52. ^ a b c "License Data on GIF and Other LZW-based Technologies". Archived from the original on two June 2009. Retrieved 26 Apr 2005.
  53. ^ "Why There Are No GIF Files on GNU Spider web Pages". Free Software Foundation. Archived from the original on 19 May 2012. Retrieved 19 May 2012.
  54. ^ "PNG versus GIF Compression". Archived from the original on 15 July 2009. Retrieved 8 June 2009.
  55. ^ "AlphaImageLoader Filter". Microsoft. Archived from the original on 3 October 2014. Retrieved 26 May 2015.
  56. ^ "What's New in Cyberspace Explorer 7". MSDN. Archived from the original on 1 March 2009. Retrieved vi March 2009.
  57. ^ "PNG Image File Format". Archived from the original on 14 June 2009. Retrieved viii June 2009.
  58. ^ "Can I employ... Support tables for HTML5, CSS3, etc". caniuse.com. Archived from the original on 19 February 2018. Retrieved ten Apr 2020.
  59. ^ "VOTE FAILED: APNG 20070405a". SourceForge mailing list. 20 April 2007. Archived from the original on iv June 2012. Retrieved fourteen July 2013.
  60. ^ "Discussion for a unproblematic "animated" PNG format". Archived from the original on 26 February 2009. Retrieved 12 July 2011.
  61. ^ "APNG Specification". Archived from the original on 5 July 2010. Retrieved 26 May 2015.
  62. ^ "Mozilla Labs » Web log Archive » Ameliorate animations in Firefox three". Archived from the original on vii March 2016. Retrieved 3 February 2016.
  63. ^ "195280 – Removal of MNG/JNG support". Archived from the original on 25 February 2021. Retrieved 26 May 2015.
  64. ^ "18574 – (mng) restore support for MNG animation format and JNG prototype format". Archived from the original on 17 March 2021. Retrieved 26 May 2015.
  65. ^ "Chromium Web log: Chrome 32 Beta: Animated WebP images and faster Chrome for Android affect input". Blog.chromium.org. 21 Nov 2013. Archived from the original on 17 July 2018. Retrieved 1 February 2014.
  66. ^ "Introducing GIFV - Imgur Blog". imgur.com. 9 October 2014. Archived from the original on 14 December 2014. Retrieved 14 December 2014.
  67. ^ Thomson, Gavin; Shah, Athar (2017). "Introducing HEIF and HEVC" (PDF). Apple tree Inc. Archived (PDF) from the original on 19 January 2020. Retrieved 5 August 2019.
  68. ^ "HEIF Comparison - High Efficiency Paradigm File Format". Nokia Technologies. Archived from the original on 25 July 2019. Retrieved 5 August 2019.
  69. ^ "#3271 (Allow using additional pixel formats with libvpx-vp9) – FFmpeg". trac.ffmpeg.org. Archived from the original on 16 June 2020. Retrieved x April 2020.
  70. ^ Dewey, Caitlin. "Meet the engineering science that could brand GIFs obsolete". The Washington Post. Archived from the original on eleven May 2015. Retrieved 4 February 2015.
  71. ^ "WebM support on 4chan". 4chan Blog. Archived from the original on vi April 2014. Retrieved 4 Feb 2015.
  72. ^ "Introducing GIFV". Imgur. 9 August 2014. Archived from the original on v May 2020. Retrieved 21 July 2016.
  73. ^ Allan, Patrick. "Imgur Revamps GIFs for Faster Speeds and College Quality with GIFV". Lifehacker. Archived from the original on 3 February 2015. Retrieved 4 February 2015.
  74. ^ "GIF Revolution". Official Telegram Blog. 4 January 2016. Archived from the original on 10 January 2016. Retrieved 4 Jan 2016.

External links [edit]

  • The GIFLIB project
  • spec-gif89a.txt GIF 89a specification on w3.org
  • GIF 89a specification reformatted into HTML
  • LZW and GIF explained
  • Blithe GIFs: a six-infinitesimal documentary produced by Off Book (web serial)
  • GifCities (The GeoCities Animated GIF Search Engine)

lauentil1987.blogspot.com

Source: https://en.wikipedia.org/wiki/GIF

0 Response to "Cartoon Gif Shoveling Fill Up Again"

Post a Comment

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel