jpg, bmp, gif

JPG/JPEG - dobio je ime po grupi koja ga je razvila: Joint Photographic Experts Group. Inace, to je kompresovani fajl sa gubitkom kvaliteta (mogu i tacno da ti napisem kako se obara kvalitet i vrsi kompresija, ali to prelazi potrebe znanja jednog trinaestogodisnjaka ;) ) i mogucnoscu snimaanja u 24-bit kolornom modu (16+ miliona boja)

BMP - Bitmap - tehnika snimanja grafike tako sto se mapiraju pikseli. Bitmap nema kompresiju (mada moze koristiti LZH) i nema gubitak kvaliteta, ali su zato fajlovi 'ogromni' (bitmap je maltene RAW image file). Bitmap moze biti 2-bit (crno-belo), 4-bit (16 boja), 8-bit (256 boja/grayscale), 16-bit (65536 boja) o 24-bit (16+ miliona boja).

GIF - Graphic Interchange Format - ima ponesto od oba u sebi ali se dosta i razlikuje. Prvo, GIF, kao i Bitmap, nema gubitka kvaliteta. Po defaultu koristi LZH kompresiju za primenu koje je do pre godinu dana moralo platiti licencu pa zato mnogi programi nisu mogli da pisu u GIF format (pogotovo ne besplatni). Dve glavne prednosti GIF-a u odnosu na Bitmap su to sto moze da se animira i sto sadrzi sloj za providnost - zbog ovih razloga se najcesce koristi na web-u... A mana je sto moze biti samo 8-bit (255 boja + transparency).

Iz svih tih formata na kraju su se izrodili PNG (Portable Network Graphics) i MNG (Multiple-image Network Graphics).

PNG je jako slican GIF-u s' tim sto moze snimati kolorne seme kao i Bitmap (dakle od 2-bit do 24-bit, + 32-bit mod) i koristi open-source zlib kompresiju pa se licenca ne mora placati (on je nastao dok je kod GIF-a to bio glavni problem). Glavna prednost istog je snmanje 32-bit boja (24-bit (16+ miliona boja) + 8-bit (grayscale) alpha mask) odnosno snimanje 8-bitne alpha maske koja sluzi za definisanje transparentnosti. Za razliku od GIF-a gde je to 'vidljivo ili ne' (jedna boja se koristi umesto providnosti), PNG moze da definise 8-bit (dakle 256 nivoa) providnosti pa tako neki deo slike moze biti transparentniji od drugog... Postoje i prepravke PNG standarda gde se snima 16-bit alpha mask (pa kolorna sema iznosi 40-bit) za snimanje 65536 nivoa transparentnosti, no to tesko ljudsko oko na monitorima kakvi su danas moze da primeti... 255 levela transparentnosti je sasvim dovoljno i PNG to odlicno radi...

MNG je modifikacija PNG standarda kako bi se potpuno zamenio GIF (tada je vodjena jaka kampanja protiv GIF-a zbog bezobrazne licence, proveri http://burnallgifs.org/ ) - dodala je PNG-u i mogucnost animacije i to mnogo naprednije od interne GIF-ove (sto je omogucilo cak manju velicinu fajla)...

PNG/MNG su, kao sto rekoh, kompresovani formati, ali su kao i GIF loss-less, tj. ne gube na kvalitetu pri kompresiji. U mnogo cemu su superiorniji od svih ostalih formata i zaista ti preporucujem koriscenje istih.

Inace, imas tu i ostale poput TIFF, AIF, TGA etc. samo su oni manje poznati...

A sto MSPaint koristi BMP - zato sto je Microsoft kad je napravio Windows 1.0 i kasnije 3.0/3.1, odabrao je bitmap fontove i bitmap ikone kao glavne definicije svog interfejsa (pitaj njih zasto). Ostalo dolazi iz tradicije, i cesto ces videti da .bmp fajl neko oglasava kao Windows Bitmap (inace nije to windows bitmap, to je bitmap bez kompresije). Danas, koliko znam, MSPaint moze da snima i u par drugih formata...

Doduse, ko jos koristi MSPaint?!?
 
@ Incognito
Napisao si "PNG/MNG su, kao sto rekoh, kompresovani formati, ali su kao i GIF loss-less, tj. ne gube na kvalitetu pri kompresiji. U mnogo cemu su superiorniji od svih ostalih formata i zaista ti preporucujem koriscenje istih"

Posto nisam neki znalac grafickih formata, molio bih te da mi das neki hint, gde se moze naci mnogo vise o ta dva formata. Nemam razloga da ti ne verujem, pa me zanima da GIF mzamenim jednim od ova dva formata, jer mi bas to treba, mnogo bolja grafika (sa vise od 256 boja) ali sa transparentnscu i boljim kvalitetom.

Za pripremu stranica, koristim "Actual Drawing" Nikako da provalim sta radi sa grafikom. Kao rezultat exportovanja, izbaci GIF fajl, ali je toliko dobar, da ima perfektan izgled. Prosto da ne poverujes. Koliko god boja koristio, ma kako komplikovana i "zgusnuta" grafika bila, pretvara u GIF ne gubeci na kvalitetu. Sigurno mnogo vise of 256 boja. Ili vrsi neku "interpolaciju" bojama ili sta je? Imas li ideju?

A da ne bih mnogo lomio glavu sa time, mozda je PNG/MNG format ono sto trazim. Samo, kakva je velicina fajlova, da nisu "gabaritni"?
 
Za PNG, http://www.libpng.org/pub/png/ ... Imas biblioteke, specifikacije i ostale zezancije... Isto to imas za MNG na http://www.libmng.com/pub/mng/ ...

Sto se tog exportovanja GIF-a tice, GIF moze da ima samo 256 boja, tj. 8-bit grafiku, medjutim to ne znaci da te boje moraju biti u osnovnoj paleti... To moze biti i 256 nijansi sive, 256 nijansi plave etc. GIF format takodje koristi mapiranje piksela, ali se kod njega paleta unapred definise. Pa tako ti mapiras boje za odredjeni bajt, u fazonu:

00 0x00FF00
01 0x00FE00
02 0x00FD00

etc. (definisanje zelenih nijansi)... Kasnije kad se zapisuje piksel, GIF ih pamti kao:

FF0A0301 00, etc... Gde je prvo RECT struktura koja definise polozaj piksela, a drugo boja iz unapred definisane palete... Tako da boja zaista ostaje 8-bitna... Naravno, na kraju se sve to kompresuje LZH kompresijom i dobije se GIF kakav cesto srecemo...

Dobro, ovo je povrsno objasnjenje (GIF je ipak malko drugaciji) ali tek da shvatis kako to ide...

PNG ima dosta drugaciji pristup - varijabilni pikseli. To ga cini malko tezim za koriscenje od GIF-a, ali zato fajl moze ispasti i manji nego kod GIF-a... Naime, on (generalno) ne snima definisanu paletu (bilo bi iluzorno mapirati 16+ miliona boja) vec ocekuje da program sam 'desifruje' paletu koju koristi. Po ustaljenom standardu, koristi se RGB pristup pa je 0x00000 crno, 0xffffff je belo... Medjutim, u header-u imas prostora za definisanje palete, jer to moze nekad da napravi ustedu (snimis 8-bit plaletu kao kod GIF-a recimo). E sad, caka je u tome sto dok GIF, koji koristi samo 1 bajt za boju, PNG mora da koristi 3 (nativno, bez definisane palete). Da bi se to nadomestilo, stvorila se jos jedna razlika izmedju PNG-a i GIF-a - dok GIF zapise sve bajtove (prava bitmapa), PNG to ne radi... PNG ima mogucnost da 'mapira' range piksela, tj. da spakuje vise istih piksela u istu definiciju... Recimo da imas sliku 4x4 na kojoj je prvi 'red' beo, drugi red do pola beo, a od pola drugog reda nanize sve je crno. Sad, GIF bi to resio ovako:

-- definisanje palete --
0x01 0x00
0x02 0xFF

-- definisanje RECT velicine --
0xA1

-- mapiranje slike --
00 01 00 01 01 00 02 01 00 03 01 00 04 01 00 05
01 00 06 00 00 07 00 00 08 00 00 09 00 00 10 00
00 11 00 00 12 00 00 13 00 00 14 00 00 15 00 00

(mislim ovo je lupanje tek da ti pokazem kako sve to ide)... Dakle, prvo definise piksel (bold), pa boju iz palete (italic), pa 0x00 (underline) kao kraj definicije piksela, i tako dok ne izredja sve... To je standardna metoda mapiranja piksela...

Kod PNG-a je to malo drugacije... On moze da definise range piksela jedne boje, i range piksela druge boje... U fazonu:

-- definisanje RECT strukture --
0x00000000000000A1

-- mapiranje piksela --
00 FF 05 00 FF FF FF 00 06 FF 15 00 00 00 00

Gde 00 FF 05 predstavlja range od prvog do sestog piksela, a zatim sledi boja FF FF FF (bela) i pa 00 kao kraj definicije prvog range-a, a onda ide definicija piksela do kraja...

Naravno, nije to bas tako u praksi, ali ovo je plastican primer kakva je razlika izmedju ova dva formata... PNG nativno, gotovo uvek, zauzme manje mesta od GIF-a, medjutim PNG ima veci header, definise gama korekcije (kako bi se isto video na svim platformama) i malo drugacije definicije piksela, a koristi standardnu gzip kompresiju, dok GIF koristi LZH i odlicno ga kompresuje (mada je gzip delotvorniji u vecini slucajeva), tako da na kraju velicine fajlova budu priblizno iste (nekad je PNG manji, nekad (retko) GIF) s' tim sto god PNG-a mozes da definises alpha masku i sto imas realnu 24-bitnu paletu boja...

MNG je, sa druge strane, gotovo uvek (dobro, to zavisi od primene) primetno manji od animiranih gif-ova... E sad, jedini je problem sto je MNG jako mlad format i retko koja aplikacija ga podrzava (za sad imas jedino plugin za Mozilla/Netscape browsere) medjutim ako pogledas u strukturu istog, ne moras biti veliki optimista da mu predvidis svetlu buducnost...

Eto, pisao bih ja jos dosta o ovome, mozda cak i tehnicku stranu, ali specifikacije formata imas na gore pomenutim stranama, i videces da uopste nije tesko...

I za kraj, napravi mali test... Otvori bilo koji GIF u Photoshop-u (ili gde god hoces), a onda 'Export for Web' i odaberi PNG-8, i selektuj broj boja koji ima i originalni GIF... Pa proveri sta je vece ;)
 
Hvala ti na ovome. I na linkovima.
Provericu sta mi vise odgovara za moje potrebe. U svakom slucaju, veoma interesantne stvari sam saznao. Covek uci dok je ziv.
Povrsno poznavajuci te standarde, jednostavno sam PNG i ostalo gledao kao nesto razlicito (JPG ili BMP) i nisam se upustao u detalje.
Veoma sam se iznenadio kad sam saznao da PNG format je nekako "srodan" GIF-u.

Hvala ponovo
 

Back
Top