Slik reduserer du filstørrelsen på bilder
Opplastingsskjemaet krever under 2 MB, og bildet mitt er 8 MB. Hva er det egentlig jeg skal endre?
Tre spaker, og én av dem dominerer
Alle bildekomprimeringsverktøy drar i en kombinasjon av tre spaker: hvor mange piksler bildet har, hvor mye detalj koderen får lov til å kaste bort, og hvilket format den skriver. Folk griper først etter kvalitetsglidebryteren, fordi det er den alle verktøy viser først. Det er som regel feil sted å begynne.
Dimensjonene dominerer, fordi filstørrelsen omtrent følger antall piksler, og antall piksler følger kvadratet av lengdemålene. Halverer du bredden og høyden, sitter du igjen med en fjerdedel av pikslene. Ingenting du gjør med en kvalitetsglidebryter, er like avgjørende, og ingenting annet koster så lite i opplevd kvalitet – forutsatt at resultatet fortsatt er større enn feltet det skal vises i.
Finn ut hvor mange piksler du faktisk trenger
Et moderne mobilkamera lager bilder som er rundt 4000 piksler brede. Et fullskjermsbilde på en bærbar PC vises i noe sånt som 1500 til 2000 piksler bredde, og et bilde inne i en artikkel vises ofte i 800. Å sende 4000 piksler til et felt som viser 800, betyr at rundt 96 prosent av pikslene blir kastet av programvaren hos den som ser på, etter at de er lastet ned.
| Lengste side | Omtrentlig antall piksler | Andel av originalen på 4000 px |
|---|---|---|
| 4000 px | 10,7 millioner | 100 % |
| 2560 px | 4,4 millioner | 41 % |
| 1920 px | 2,5 millioner | 23 % |
| 1280 px | 1,1 millioner | 10 % |
| 800 px | 0,4 millioner | 4 % |
Prosentene er ren regning, ikke en måling av noen bestemt fil – en komprimert fil krymper ikke i nøyaktig samme forhold som pikselantallet. De er likevel det riktige å se på først, fordi de forteller hvor mye rom nedskaleringen gir koderen før den må begynne å kaste detaljer.
Hva kvalitetsglidebryteren gjør
I en JPEG-koder skalerer kvalitetstallet en tabell med divisorer som brukes på frekvenskoeffisientene i hver 8×8-blokk. Lavere kvalitet betyr grovere divisjon, som betyr at flere koeffisienter avrundes til null, som betyr færre bit. Den synlige kostnaden dukker først opp rundt harde kanter og i jevne overganger: ringartefakter inntil tekst, og fargebånd i himmelpartier.
Skalaen er verken lineær eller sammenlignbar på tvers av formater. Kvalitet 80 i en JPEG-koder, en WebP-koder og en AVIF-koder er tre urelaterte tall som tilfeldigvis deler samme tallområde. Vurder resultatet ved å se på det i full størrelse, ikke ved å stole på tallet.
Hvorfor en målstørrelse er et søk, ikke en innstilling
Ingen koder tar imot «gjør denne 500 KB» som en instruksjon. Den tar imot en kvalitetsinnstilling og produserer den størrelsen innstillingen gir for akkurat det bildet. Et verktøy som tilbyr deg en målstørrelse, kjører derfor et søk: kod, mål, juster kvaliteten, kod igjen, og stopp når resultatet er under budsjettet eller når kvalitetsgulvet er nådd.
Derfor er en målstørrelse alltid et beste forsøk. Et detaljrikt og støyete fotografi med høy oppløsning får kanskje ikke plass i et stramt budsjett ved noen kvalitet et menneske ville godtatt, og det ærlige svaret er å stoppe på gulvet og fortelle hvor det stoppet, i stedet for å fortsette til bildet er ødelagt. FileSlimmers verktøy for målstørrelse reduserer dimensjonene først, snevrer så inn kvaliteten mellom to grenser, og oppgir innstillingen de endte på.
Slik får du et bilde under 1 MB
Begynn med å skalere mobilbildet ned til de største dimensjonene mottakeren trenger. For e-post, skjemaer og vanlige nettsider ligger det ofte langt under kameraoriginalen. Kod deretter en ny JPEG eller WebP med høy, men ikke maksimal kvalitet, mål resultatet, og senk kvaliteten gradvis bare hvis filen fortsatt er over 1 MB.
Kvaliteten alene avgjør ikke om resultatet havner under 1 MB, for detaljrike bilder trenger mer data enn enkle. Bommer første forsøk på grensen, bør du redusere dimensjonene før du presser kvaliteten lenger ned. Det gir normalt et mer naturlig bilde enn å beholde hver piksel og legge på kraftige blokk- eller ringartefakter.
Ting som ikke hjelper
- Å legge filen i en ZIP. Komprimerte bildeformater har nesten ingen redundans igjen som et generelt komprimeringsverktøy kan finne; arkivet havner som regel innenfor en avrundingsfeil fra originalstørrelsen.
- Å endre filendelsen. Bytene endrer seg ikke, og programvare som leser den faktiske filsignaturen, blir bare forvirret.
- Å lagre en JPEG på nytt med samme kvalitet. Det er en ny runde med tap: filen blir ikke mindre på noen nyttig måte, og bildet blir litt dårligere.
- Å fjerne metadata fra et fotografi, hvis størrelse er det eneste målet ditt. Noen få kilobyte EXIF mot flere megabyte piksler er støy. Fjern dem av personvernhensyn, som er reelle, ikke for størrelsens skyld.
En arbeidsflyt som stort sett kommer i mål
- Bestem den største størrelsen bildet noen gang vil bli vist i, og skaler den lengste siden til den.
- Velg formatet som passer innholdet: et tapsbasert format for fotografier, et tapsfritt for skjermbilder og flat grafikk.
- Start på høy, men ikke maksimal kvalitet, og gå nedover til du ser skaden, og så ett hakk opp igjen.
- Se på resultatet i full størrelse, på den typen skjerm det er ment for.
- Er det fortsatt for stort, gå tilbake til første punkt. Det er nesten alltid mer å hente i dimensjonene enn i kvaliteten.
Der dette slutter å virke
Noen bilder motstår alt dette. Et skannet dokument fullt av liten tekst trenger pikslene sine for å være leselig, så nedskalering svir umiddelbart, og kvalitetsreduksjon gir nøyaktig de artefaktene som gjør tekst vanskelig å lese. Et skjermbilde av et regneark har samme problem. For dem er riktig svar ofte et annet format – tapsfritt, eller en PDF – heller enn færre kilobyte.
Og hvis en portal avviser filen din, sjekk om grensen gjelder filstørrelsen eller pikseldimensjonene. Det er to forskjellige grenser, og en fil som klarer den ene, kan fortsatt stryke på den andre.
Verktøy for dette
Kilder
- ITU-T T.81 — quantisation and the JPEG quality scale
- MDN — Image file type and format guide
- MDN — Responsive images and choosing a display width