Hur fungerar filkomprimering?

Filkomprimering är kärnan i hur den moderna webben fungerar, man kan argumentera för, eftersom det tillåter oss att dela filer som annars skulle ta för lång tid att överföra. Men hur fungerar det?

Filkomprimering är kärnan i hur den moderna webben fungerar, man kan argumentera för, eftersom det tillåter oss att dela filer som annars skulle ta för lång tid att överföra.  Men hur fungerar det?
Annons

Vi har alla hört talas om filkomprimering. Den som regelbundet hämtar filer från webben är bekant med format som ZIP och RAR, och alla som redigerar mediefiler vet att komprimering är nödvändig för att dela bilder, musik och videor på webben utan att använda hela din bandbredd. Filkomprimering är kärnan i hur webben fungerar, du kanske argumenterar för att det tillåter oss att dela filer som annars skulle ta för lång tid att överföra. Men hur fungerar det?

Det är inget magiskt, men det är resultatet av mycket hårt arbete av många mycket smarta människor. Låt oss undersöka hur filkomprimering fungerar genom att titta över de två huvudtyperna komprimering - förlustfri och förlustfri.

Bara en varning - Jag kommer att översimplifiera saker här i ett försök att göra det här läsligt av icke-matte majors. Kolla in länkarna till Wikipedia-artiklar för mer djup och Wikipedias källor för ännu mer.

Lossless kompression

Lossless kompression fungerar i grunden genom att avlägsna redundans. Vad betyder det? Låt oss förenkla saker. Den här stenen tegelstenar representerar våra data:

hur fungerar filkomprimering

Som du kan se har vi två röda tegelstenar, fem gula och tre blåa. Det enklaste sättet att representera detta är som du ser ovan: tegelstenarna själva. Men det är inte det enda sättet jag kan representera detta. Jag kan också göra det här:

hur filkomprimering fungerar

I bilden ovan kan du se exakt samma information - två röda, fem gula och tre blåa - men det tar upp betydligt mindre utrymme. Jag har representerat redundanta tegelstenar som använder siffror, vilket innebär att jag bara behöver tre tegelstenar för att representera tio.

Detta ger en grov uppfattning om hur förlustfri komprimering är möjlig. Information som är överflödig ersätts med instruktioner som berättar för datorn hur mycket identiska data upprepas. Ett annat förenklat exempel:

fffffffuuuuuuuuuuuu

Kan "komprimeras" till:

f7u12

Det här är bara en metod för förlustfri komprimering, men det pekar på hur det är möjligt. Andra matte tricks används, men det viktigaste att komma ihåg om förlustfri komprimering är att medan mellanslag tillfälligt sparas är det möjligt att rekonstruera den ursprungliga filen helt från den komprimerade. Om du ser tre tegelstenar med siffror vet du exakt hur man gör stacken. Ingen information går förlorad, precis som namnet förlustfri innebär.

Program som WinZip är baserade på förlustfri komprimering. De tar bort denna överflödiga information när du komprimerar (eller "zip") filen och återställer den när du komprimerar (eller "unzip"). Ingenting går förlorat.

I bildvärlden använder PNG-filer också förlustfri komprimering. Det är därför de erbjuder en mindre filstorlek för bilder med mycket likformigt utrymme: den redundanta informationen representeras med hjälp av instruktioner.

Självklart är allt detta en förenkling, men det blir den grundläggande punkten över. Läs mer om förlustfri kompression på Wikipedia, om du är intresserad.

Lossy Compression

Självklart finns det bara så mycket du kan åstadkomma med bara förlustfria metoder. Lyckligtvis är de inte det enda alternativet: du kan också helt enkelt ta bort information. Detta kallas förlorande komprimering, och det är inte så galet som det låter; i själva verket har du förmodligen många filer på din dator som skapats med förlust av komprimering.

En MP3, till exempel. Om du är som de flesta, lagrar din dator tusentals för dig, men visste du att de inte innehåller all ljudinformation som den ursprungliga inspelningen gjorde? Vissa ljud, vilka människor inte eller kan knappt höra, tas bort som en del av komprimeringen. Ju mer du komprimerar en fil desto mer information tas bort, varför en alltför komprimerad fil börjar ljuda lerig.

Lossy compression tenderar oftast att användas för mediefiler - bilder, ljud och video. Att använda lossy-komprimering för en textfil skulle vara problematisk, eftersom den resulterande informationen skulle vara förvrängd. Det är inte alltid nödvändigt att mediefiler innehåller all information, dock.

Ett annat exempel på förlustkomprimering är JPEG-bilden. Generellt sett behöver bilder som ses på webben inte vara lika höga som bilder avsedda för utskrift. Som sådan kan du ta bort mycket överflödig information i en webbbild, även om det skulle bli så hemskt att skriva ut det.

Naturligtvis, att komprimera upprepade gånger en fil med förlustmetoder minskar kvaliteten - varje gång du gör det förloras mer data. Nedan är ett foto som jag har komprimerat tre gånger för att visa detta:

hur fungerar filkomprimering

Du kan se från vänster till höger hur kvaliteten minskar. Det kan inte ha betydelse, beroende på vad bilden ska användas till, och det är därför lossnande komprimering existerar.

Det är viktigt att komma ihåg att filer som komprimerats med förlustmetoder faktiskt förlorar data, vilket betyder att du inte kan återskapa originalfilen från en komprimerad med förlustmetoder. Det är uppenbart när du tänker på det, men många utskriftsprojekt har förstörts för brist på förståelse för denna viktiga punkt.

Jag har verkligen bara repat ytan här, så snälla: Läs mer om förlustkomprimering på Wikipedia. Det är snällt fascinerande.

Slutsats

Komprimering bidrog till att göra nätet vad det är. I dagarna med uppringning komprimerade bilder tog bilder till vår webbläsare, åtminstone inte till en acceptabel hastighet. Komprimerad video gör att webbplatser som YouTube är möjliga, och alla som använder fildelningsnätverk känner till ZIP och RAR-filer.

Har du något att lägga till? Jag är säker på att jag har missat några viktiga punkter så utbilda mig (och de andra läsarna) i kommentarerna nedan.

Bildkredit: Vårbild via Shutterstock

In this article