2005. február 02
Súly és optimalizálás. Megmagyarázzuk, hogyan kell kiszámítani egy grafikus fájl súlyát, és hogyan lehet csökkenteni a grafikus fájl bájtjainak méretét. Példák a képek tömegének optimalizálására használt technikákra.
Ebben a cikkben kitérünk néhány alapvető szempontra, amelyeket figyelembe kell vennünk, amikor általában grafikus fájlokkal és különösen bitképekkel dolgozunk. Arról van szó, hogy ellenőrizzék a fájlok súlyát, hogy azok kevesebb helyet foglaljanak el, és ezért gyorsabban továbbíthatók legyenek.
Az interneten létfontosságú kérdés, és a DesarrolloWeb.com webhelyen már többször foglalkoztunk ezzel a kérdéssel. Ebben a webdesign-kézikönyvben elméleti megközelítéssel találja meg, de alapvető ismeretekkel rendelkezik mindazok számára, akik elkötelezettek a webdesign mellett.
Először a fájlok súlyáról beszélünk, majd meglátjuk, hogyan lehet optimalizálni őket.
A grafikus fájlok súlya
A bittérképek változó számú színben definiálhatók. Általános szabály, hogy minél több színű a kép, annál jobb minőségű lesz, bár ez a szabály sokat függ a képtől.
Például egy fehér alapon fekete betű (1 bites színmélység), amely egyenes vízszintes és függőleges vonalakból áll, csak a két szín megfelelő megjelenítésére lesz szükség, még akkor is, ha növeljük méretüket (felbontás).
Ha 8 bit színmélységgel dolgozunk, akkor 256 lehetséges színünk lesz minden pixelhez (például GIF formátumú ikonok vagy illusztrációk esetén), és ha a mélységet 24 bitre növeljük, akkor milliónyi színünk lesz a kép minden egyes képpontja (például JPG vagy PNG formátumú fényképek esete).
Különböző felbontásokat is meghatározhatunk egy képhez. Minél nagyobb a felbontás, annál több képpont képződik, annál több információra lesz szüksége, és ezért nagyobb lesz a kapott fájl mérete.
Ezért minél több a kép színe és nagyobb a felbontása, annál nagyobb a fájl súlya, amely szükséges a tárolásához.
A fenti képletben a szélességet és a magasságot hüvelykben, a felbontást pixelenként és a színmélységet bájtban adják meg.
Például 3 x 2 hüvelykes képhez 72 dpi felbontással és 8 bit színmélységgel:
Fájlméret = [[(3 x 72) x (2 x 72)] x 8]/8 = 31104 bájt = 31 Kb
Ha a kép mérete centiméterben van megadva, ossza el ezeket 2,54-vel. Így egy 1 x 1 hüvelykes kép 300 dpi felbontással és 24 bit színmélységgel (valódi szín) súlya: összesen 90 000 pixelt tartalmaz.
Fájlméret = [[(1 x 300)/2,54 x (1 x 300)/2,54] x 24]/8 = 41850 bájt = 419 Kb
Ha közvetlenül pixelekkel dolgozunk (például digitális fényképezőgéppel rögzítjük), akkor elegendő lesz a kép méretét egymással és a színmélységgel megszorozni, hogy meghatározzuk a képfájlban lévő bitek mennyiségét, és ha az eredményt elosztjuk 8 között, akkor a fájl súlya bájtokban lesz megadva.
Mint láthatjuk, a kapott súlyok nagyon magasak, különösen az internetre szánt képek esetében, ahol a sávszélesség korlátozott erőforrás.
Grafikus fájlok optimalizálása
Általában a bittérképes fájloknak sok grafikus információt kell tárolniuk, ami végső súlyukat bájtokban megnöveli, mind a nyomtatáshoz (ha a kép nagyon nagy, a nyomtatási folyamat hosszú időt vehet igénybe), mind az internetes átviteléhez, olyan közeg, amelyben a sávszélesség nagyon korlátozott.
A grafikus fájlok súlyának minimalizálása érdekében két különböző elv alapján különböző optimalizálási technikákat fejlesztettek ki:
- Csökkentse a képen használt színek számát.
- Tömörítse a képadatokat, hogy kevesebb helyet foglaljon el.
Színcsökkentés (tompítás)
A dithering elve a képen használt színek számának csökkentésén alapul, figyelembe véve, hogy az esetek többségében túl sok grafikus információt használnak fel egy fájlban, ami olyan információ, amely a kép végső minőségében észrevehető veszteség nélkül kiküszöbölhető.
Ha egy bizonyos kép csak 40 színt használ, akkor a fájl méretének csökkentéséhez elegendő a 40 szín meghatározása egy színpaletta segítségével, majd a kép pontjainak mentése 8 bit mélységgel.
Másrészt egy 256 színt használó kép elfogadható minőségű lehet ugyanahhoz a képhez képest, 16,8 millió színnel, háromszor kisebb méretben. Annak érdekében, hogy olyan színt kapjunk, amely nincs jelen a kép 256 színpalettájában, mindig lehetséges a meglévő színek keverése, a legtöbb esetben jó közelítéssel a szükségeshez.
A dithering technika feladata lesz kiszámítani azt az arányt, amellyel a paletta színeit el kell keverni, hogy más színt kapjanak.
Egy bizonyos színtónus eléréséhez több pontot használnak, amelyek színe nagyon közel áll az elérni kívánt színhez. A kép bizonyos távolságból történő megtekintésekor a szomszédos pontok színe keveredik, ami új színárnyalatok illúzióját kelti.
Ezt a színcsökkentési optimalizáló rendszert például GIF formátumban használják.
Adatcsökkentés (tömörítés)
A tömörítés olyan technika, amely lehetővé teszi a fájl méretének csökkentését matematikai folyamatok révén, megkönnyítve ezáltal a hálózaton keresztüli átvitelüket vagy bármely más adathordozón történő tárolást.
Minden tömörítési technika a tömörítetlen kép bináris kódláncát matematikai rövidített formává redukálja, összetett algoritmusokon alapul, azon elmélet alapján, hogy egy képben vannak olyan ismételt információk, amelyeket valóban csak egyszer kell elmenteni.
A tömörítés előállításához a számítógép által használt matematikai algoritmusok nagyon változatosak, és némelyik valóban összetett. Egyesek minden képtípusra érvényesek, mások pedig csak egy típusukra érvényesek.
A tömörítési algoritmusoknak két alapvető típusa van: veszteségmentes és veszteségesen tömörítő algoritmus.
A veszteségmentes rendszerek rövidítik a bináris kódot az információk elvetése nélkül, így a dekódoló kimeneti adatok bitenként azonosak az eredeti forrással. Az elért tömörítési tényezők kicsiek, a legjobb esetekben kisebbek, mint 10: 1, és bizonyos tömörítési tényező nem garantálható, mivel ez az eredeti információ redundanciájának mértékétől függ. Ezeket a rendszereket gyakran használják a szöveges anyagok bitonális beolvasásakor.
A Lossy rendszerek különböző módszerekkel kompenzálják vagy elvetik a kép kevésbé fontos információit az emberi vizuális észlelés alapján, néha sokkal kisebb eredménnyel eredményeket érnek el, mint az eredeti. A képminőség nemcsak a tömörítési tényezőtől, hanem az alkalmazott algoritmustól is függ. A tömörítési tényezők magasak, 40: 1 és 100: 1 között
Gyakran használják tónusos képeknél, különösen folytonos tónusú képeknél, ahol a veszteségmentes rendszerek által nyújtott információk egyszerű rövidítése nem eredményez jelentős fájlmegtakarítást.
A tömörítési rendszerek, az újonnan megjelenő rendszerek változata létezik, amelyek lehetőséget nyújtanak több fájl felbontásának egyetlen fájlból történő előállítására, ebből következően rugalmasan kezelve a képeket a végfelhasználók számára.
A grafikus fájlokban használt fő tömörítési algoritmusok a következők:
RLE (futás hossza kódolt)
Talán ez a legegyszerűbb veszteségmentes tömörítési séma, és az egyik leghatékonyabb is. Ez azon pixelek grafikus információinak kicserélésén alapul, amelyek megismétlődnek az egyik színének színével és az azt használó egyes pontok helyzetével.
Ez a technika akkor hatékony, ha a tömörítendő grafikus fájlon belül egy bájtot sokszor egymás után megismételnek. Ezekben az esetekben ugyanazokat a bájtokat kettő váltja fel, amelyek közül az első jelzi a második ismétlés számát.
Az RLE megvalósításának különböző módjai vannak, mindegyik saját tulajdonú. Az egyik, a leghatékonyabb, egy olyan karakter használata, amelyet általában DLE-nek hívnak, amely arra utal, hogy egy karakter megismétlődött. A másik egy "őrszem" karaktert használ, egy bitet, amely jelzi, hogy a következő információ ismétlésről szól-e, vagy ismétlés nélküli adatról van-e szó.
Ez a módszer lehetővé teszi a magas tömörítés elérését olyan képeken, amelyek sok azonos színű területet tartalmaznak, a minőség romlása nélkül. A probléma akkor merül fel, ha a kép színei nagyon egyenetlenek, ilyenkor nagyobb fájlokat kaphat, mint az eredetik.
Az RLE a BMP és a PCX grafikus formátumokban használt algoritmus, bár mindegyik más és más megvalósítási módszert használ.
Veszteségmentes tömörítési rendszer, jelenleg az Unisys vállalat tulajdonában van, amelyet Abraham Lempel és Jakob Ziv matematikusok fejlesztettek ki 1977-ben és 1978-ban, és Terry Welch finomította 1984-ben.
Ezt az algoritmust azzal a céllal hozták létre, hogy a Compuserve vállalat minden embere gyorsan cserélhessen képeket GIF grafikus formátumban, függetlenül a használt platformtól.
Az LZW egy szótár típusú tömörítő, amely egy tömörítési táblázatot használ a karakterláncokhoz, és a fájl ugyanazon karaktereinek karaktersorozatait az őket reprezentáló egyedi numerikus kódokkal helyettesíti, így képes tömöríteni őket, még akkor is, ha nem találhatók egymás után. A tömörített fájlban a karakterlánc-táblázat nem jelenik meg kifejezetten, csak az egyes karaktertáblák és az összes generált kód halmaza. Ily módon 2: 1 maximális tömörítési szintet érnek el
Ez a rendszer olyan fájlok tömörítésére ajánlott, amelyek sok ismételt adatot tartalmaznak, például egyszerű, monokróm képek, vagy amelyek nagy színterületeket tartalmaznak, és amelyeket TIFF, GIF és JPG-LS formátumban, valamint PostScript nyelvi fájlokban használnak.
JBIG (Közös kétszintű szakértői képcsoport)
Nagyon robusztus veszteségmentes tömörítési rendszer kétszintű képekhez (fekete-fehér), szekvenciális és progresszív módban egyaránt.
Ha egy progresszíven kódolt képet dekódolunk, akkor kezdetben alacsony felbontású kép áll rendelkezésre az eredetihez képest, és több adat dekódolásával nő a felbontás.
A progresszív kódolásnak számos előnye van. Először ugyanaz a képadatbázis különböző felbontású különböző kimeneti eszközöket képes kiszolgálni. Csak a tömörített képfájlban lévő információkat kell elküldeni és dekódolni, amelyek lehetővé teszik az adott kimeneti eszköz felbontásának rekonstrukcióját. Másodszor lehetővé teszi az alacsony felbontású kép gyors továbbítását és megjelenítését a kívánt felbontásnöveléssel. Harmadszor, lehetővé teszi a felhasználó számára a kép gyors felismerését, ami lehetővé teszi a felhasználó számára, hogy megszakítsa a nem kívánt kép továbbítását.
Ezt a rendszert használják a TIFF grafikus formátumban, és egyetlen jelenlegi webböngésző sem támogatja.
JPEG (közös fényképészeti szakértői csoport)
Az emberi vizuális észlelés tanulmányain alapuló, rendkívül kifinomult veszteséges tömörítési rendszer, amely lehetővé teszi a színes (24 bites) és a szürkeárnyalatos (8 bites) képek kódolását a nem fontos redundáns adatok eltávolításával, valamint az élek és területek simításával. hasonló színű.
Ez olyan veszteségeket eredményez, amelyek kissé rontják a kép minőségét, de cserébe magas tömörítési arányt biztosítanak, a kódolandó kép végső minőségéhez igazítva.
Valójában a JPEG, az 10918 nemzetközi szabvány, komplex matematikai műveleteken alapuló tömörítési technikák családját írja le, mint például a színformátum-konverzió, a különálló koszinusz-transzformáció (DCT), a kvantálás és az entrópikus kódolás, és három különböző kódolási rendszert határoz meg:
- Alapvető, veszteséges kódolási rendszer, amely a diszkrét koszinusz transzformáción alapul, és alkalmas a legtöbb tömörítési alkalmazásra. a bemeneti és kimeneti adatok pontossága 8 bitre korlátozódik.
- Kiterjesztett kódolási rendszer nagyobb tömörítéshez, nagyobb pontosságú vagy progresszív rekonstrukciós alkalmazásokhoz. Elsősorban egy tömörített kép gyors részleges dekódolásának biztosítására szolgál, hogy a tömörített kép teljes megjelenése még a teljes dekódolás előtt meghatározható legyen.
- Független veszteségmentes kódoló rendszer a visszafordítható tömörítéshez.
A JPEG egy szimmetrikus kódoló algoritmus (a dekódolás annyi időt vesz igénybe, mint a kódolás), amely 20: 1 vagy magasabb tömörítési szinteket kínál, lehetővé téve bizonyos geometriai átalakítások (például képelforgatás) végrehajtását közvetlenül a transzformált mátrixon, az eredeti regenerálása nélkül. kép.
Ez a tömörítési módszer, amelyet manapság a legtöbbször használnak veszteséges képtömörítéshez, amelyet grafikus formátumokban, JPG, TIFF, FlashPix, PDF fájlokban és PostScript nyelvi fájlokban használnak. Ezenkívül ez az alapja a mozgóképek multimédiás szabványának, az MPEG-nek.
Ami a webböngészőket illeti, az Internet Explorer 2 és a Firefox minden verziójában támogatja. Természetesen olyan modernebb böngészőkben is, mint a Chrome.
Tanácsadó, tervező és webfejlesztő a ParaRedeBJS-nél. Usabill szakember.
- Topológiai optimalizálás az űrkutatás alkatrészeinek és szerkezeteinek súlycsökkentésére
- A túlsúlyos emberek hajlamosabbak a demenciára - La Tercera
- Mítoszok és csalások; Fogyni jéghideg sör ivásával
- Nyolc gyakorlat, amelyekkel többet fog fogyni, mint futni menni
- Nyolc módon lehet fogyni edzés nélkül!