Ano ang GIF file?
Ang GIF o Graphical Interchange Format ay isang uri ng lubos na naka-compress na imahe. Pagmamay-ari ng Unisys, ginagamit ng GIF ang LZW compression algorithm na hindi nagpapababa sa kalidad ng larawan. Para sa bawat larawan, karaniwang pinapayagan ng GIF ang hanggang 8 bits bawat pixel at hanggang 256 na kulay ang pinapayagan sa kabuuan ng imahe. Kabaligtaran sa isang JPEG na imahe, na maaaring magpakita ng hanggang 16 na milyong kulay at medyo umabot sa mga limitasyon ng mata ng tao. Noong lumitaw ang internet, ang mga GIF ay nanatiling pinakamahusay na pagpipilian dahil nangangailangan sila ng mababang bandwidth at tugma para sa mga graphics na kumonsumo ng mga solidong bahagi ng kulay. Pinagsasama ng animated na GIF ang maraming larawan o mga frame sa isang file at ipinapakita ang mga ito sa isang pagkakasunud-sunod upang makabuo ng isang animated na clip o isang maikling video. Ang mga limitasyon sa kulay ay hanggang 256 para sa bawat frame at malamang na hindi gaanong angkop para sa pagpaparami ng iba pang mga larawan at litrato na may color gradient.
Format ng GIF File
Sa konsepto, ang mga GIF file ay may nakapirming laki ng graphical na lugar na puno ng zero o higit pang mga larawan. Hinahati ng ilang GIF file ang fixed-sized na graphical na lugar o mga bloke sa mga sub-image na may kakayahang gumana bilang mga animated na frame kung sakaling may animated na GIF. Ginagamit ng GIF format ang pixel depth na 1 hanggang 8 bits para iimbak ang bitmap data. Ang modelo ng kulay ng RGB at data ng palette ay palaging ginagamit upang mag-imbak ng mga larawan. Depende sa bersyon, ang isang fixed-length na header (“GIF87a” o “GIF89a”) ay tumutukoy sa simula ng isang tipikal na GIF file.
Sa kasalukuyan, dalawang bersyon ng GIF: 87a at 89a ang available. Ang una ay ang orihinal na format ng GIF habang ang huli ay ang bagong format ng GIF. Sa format ng file na ito, binanggit ang mga katangian ng mga bloke at dimensyon ng pixel sa isang fixed-length na Logical Screen Descriptor. Ang pagkakaroon at laki ng isang Global Color Table ay maaaring tukuyin ng screen descriptor, na sumusubaybay sa mga karagdagang detalye kung mayroon. Ang trailer ay ang huling byte ng file na naglalaman ng isang byte ng isang ASCII semicolon. Ang karaniwang layout ng GIF87a file ay ang sumusunod:
Header
Ang Header ay mayroong anim na byte at ginagamit upang tukuyin ang uri ng file bilang GIF. Kahit na ang Logical Screen Descriptor ay hiwalay sa aktwal na header ngunit kung minsan ito ay itinuturing na pangalawang header. Ang parehong istraktura na ginagamit upang iimbak ang header ay maaaring mag-imbak ng Logical Screen Descriptor. Ang lahat ng GIF file ay nagsisimula sa 3-byte na lagda at ginagamit ang mga character na “GIF” bilang isang identifier. Ang bersyon ay tatlong byte din ang laki at idineklara ang bersyon ng GIF file.
Logical Screen Descriptor
Ang isang fixed-length na Image Descriptor ay tumutukoy sa screen at impormasyon ng kulay na kinakailangan upang gawin ang GIF na imahe. Ang mga field na Taas at Lapad ay nakapaloob ang pinakamaliit na halaga ng resolution ng screen, na obligadong ipakita ang data ng larawan. Kung walang kakayahan ang display device na ipakita ang tinukoy na resolution, kakailanganin ang scaling upang maipakita nang naaangkop ang imahe. Ang Impormasyon sa Screen at Color Map ay ipinapakita ng apat na subfield ng talahanayan sa ibaba (samantalang ang bit 0 ay ang hindi bababa sa makabuluhang bit):
Bits | Subfields |
---|---|
0-2 | Size of the Global Colour Table |
3 | Colour Table Sort Flag |
4-6 | Colour Resolution |
7 | Global Colour Table Flag |
Global Color Table
Isang opsyonal na Global Color Table ang inilalagay pagkatapos mismo ng Logical Screen Descriptor. Na-map ang talahanayang ito upang i-index ang data ng kulay ng pixel sa loob ng data ng larawan. Sa kawalan ng Global Color Table, ginagamit ng bawat larawan sa GIF file ang Lokal na Kulay nito. Mas mainam na magbigay ng default na table ng kulay kung parehong nawawala ang Global at Local Color Table. Isang serye ng tatlong-byte na triple ang bumubuo ng mga elemento ng talahanayan ng kulay. Ang bawat byte ay nagpapakilala ng isang halaga ng kulay ng RGB. Ang pula, berde, at asul na mga kulay ay ginagamit bilang mga halaga ng bawat elemento ng talahanayan ng kulay . Ang mga entry sa Global Color Table ay umabot sa maximum na 256 na mga entry at palaging kumakatawan sa kapangyarihan ng dalawa.
Data ng Larawan
Ang data ng imahe ay nag-iimbak ng isang byte ng mga hindi naka-encode na simbolo na sinusundan ng naka-link na listahan ng mga sub- kasama ang LZW-encoded na data.
Trailer
Kinakatawan ng trailer ang solong byte ng data na siyang huling character sa file. Ang halaga ng byte na ito ay permanenteng 3Bh at tinutukoy ang dulo ng stream ng data. Ang bawat GIF file ay dapat mayroong trailer sa huli ng bawat file.