# Afbeeldingen en hun formaten

Tip

“1 beeld zegt meer dan 1000 woorden”

Met afbeeldingen kunnen we uiteraard veel sneller iets duidelijk maken dan met woorden. Daarnaast kunnen afbeeldingen ook gebruikt worden om een bepaalde sfeer te scheppen.

Er zijn heel wat afbeeldingsformaten (JPEG, GIF, PNG, EPS, WEBP …) die ondersteund worden in een browser. Maar welke kiezen we nu best? Daar bestaat geen sluitend antwoord voor en is afhankelijk van welk soort afbeelding je wenst te tonen.

# Raster afbeeldingsformaten

Raster (of bitmap) afbeeldingsformaten maken gebruik van pixels en kleur om een afbeelding voor te stellen. Afhankelijk van het type is de bestandsgrootte verschillend. Dit heeft alles te maken met compressie. Bij compressie heb je 2 soorten:

  • Lossy: Met verlies van data (pixel informatie)
  • Lossless: Zonder verlies van data en kan je dus via decompressie dus opnieuw dezelfde afbeelding bekomen.

Hieronder vind je een overzicht van de formaten met hun voor- en nadelen.

# JPEG

JPEG – uigesproken als “jay-peg” – heeft de extensie .jpg of .jpeg en is een raster afbeeldingsformaat dat vooral gebruikt wordt vanwege de hoge compressie mogelijkheid. De hoge compressie zorgt wel voor gegevensverlies (Eng. lossy compression). Maar men kan een compressie van 10:1 bereiken met weinig verlies in kwaliteit. Er zijn nog andere varianten ontwikkeld zoals JPEG2000 en JPEG XR die een hogere compressie mogelijkheid bieden.

Colorful

Download deze foto en open deze in Photoshop. Ga op zoek naar de afbeeldingsgrootte en het aantal pixels per inch.

# PNG

PNG – “ping” – is een raster afbeeldingsformaat dat ook compressie mogelijkheden heeft maar dan zonder het verlies van ‘data’ (Lossless compression). Uiteraard kan je nooit dezelfde compressie bereiken als met JPEG.

Maar een van de grootste redenen waarom PNG populair is, is omdat het ook transparantie ondersteund. En dus daarom vaak gebruikt worden bij logo’s of bij het ‘uitsnijden’ van bijvoorbeeld personen.

Tip

Schermafbeeldingen van websites of interfaces worden dan weer beter opgeslagen als PNG. Omdat de manier van compressie hier heel goed op werkt ten opzichte van die van JPEG.

Person

# GIF

GIF – officieel uitgesproken als “djif”, maar de meeste mensen zeggen “gif” – is een raster afbeeldingsformaat die een iets betere compressie biedt dan PNG. Daarnaast biedt GIF ook transparantie aan maar in vergelijking met PNG is dit enkel 1-bit transparantie (monochrome). Een pixel is volledig transparant of is niet transparant. Maar een van de grootste redenen waarvoor GIF gebruikt wordt is voor zijn mogelijkheid tot het maken van geanimeerde afbeeldingen.

Animated GIF

# PNG versus GIF transparantie

Transparantie (c) Jaimy Van Gyseghem

# APNG of Anitmated PNG

APNG is een PNG die de animatie mogelijkheden biedt zoals GIF.

# TIFF

TIFF is een afbeeldingsformaat dat vooral gebruikt worden bij grafisch ontwerpers en in de print- en drukwereld. Dit omdat het formaat een hoge kwaliteit heeft. Wat ook resulteert in een heel hoge bestandsgrootte.

# WebP

WebP werd in 2010 ontwikkeld door google met als doen de nieuwe open standaard te worden voor ‘lossy compressed’ afbeeldingen voor het web. Dus afbeeldingen die een hoge compressie hebben, met ‘data’ verlies. Je kan afbeeldingen genereren die 26 tot 34% kleiner zijn dan JPEG voor eenzelfde kwaliteit. WebP ondersteund tevens transparantie en is vele malen kleiner dan PNG bestanden.

# Vector afbeeldingsformaten

# SVG

SVG is in vergelijking tot bovenstaande geen raster afbeeldingsformaat, maar werkt op basis van vectoren geschreven in een XML formaat. Dit bestand beschrijft de afbeelding aan de hand van coördinaten, lijnen, curves, vormen, kleuren en tekst.

Dit formaat wordt daarom vooral gebruikt bij afbeeldingen met vooral vormen zoals logo’s. Omdat niet elke pixel omschreven is is de bestandsgrootte ook veel kleiner dan bijvoorbeeld een raster afbeeldingsformaat.

Maar het grote voordeel is dat als je de afbeelding groter of kleiner kan maken zonder kwaliteitsverlies. Als je bijvoorbeeld de straal van een cirkel groter maakt dan blijft de cirkel bij SVG even mooi rond omdat deze wiskundig berekend en getekend wordt.

Firefox svg

# Andere vector afbeeldingsformaten

AI, EPS, PDF … zijn naast SVG de bekendste vector afbeeldingsformaten. Echter kunnen deze formaten niet gebruikt worden in de browser. Deze zal je dan ook vooral tegenkomen in de print- en drukindustrie.

# Grootte en resolutie

Bij rasterafbeeldingen werken we dus met pixels. Naast de juiste keuze van afbeeldingsformaat is het ook belangrijk om de juiste grootte en resolutie te kiezen.

Eenvoudig gesteld: Niet retina schermen hebben een resolutie van 72 pixels per inch. Als we een afbeelding willen weergeven over het volledige scherm van een 13,3 inch laptop. Dan hebben we een afbeelding nodig van 1280 × 800 pixels met een resolutie van 72 pixels per inch.

  • Alles wat groter is zijn te veel pixels die niet getoond zullen worden.
  • Als we een kleinere afbeelding hebben dan zal deze uitvergroot worden en zal de computer de pixels groter maken dan de eigenlijke pixels van een scherm wat dus voor een wazig beeld zal zorgen.

Maar het kiezen van de juiste grootte en resolutie is door de komst van de mobiele devices en de grote diversiteit aan schermformaten en resoluties is deze keuze niet altijd eenvoudig.

# Schermresoluties

Een afbeelding van een nieuwsartikel is op een 17" laptop bijvoorbeeld 1200 × 800 px. Terwijl dezelfde afbeelding ook getoond wordt op een smartphone met een schermbreedte van 480px. De afbeelding wordt dus kleiner gemaakt door de browser.

Het nadeel is wel dat deze afbeelding eerst volledig wordt gedownload over het (mobiele) netwerk. Terwijl we niet alle pixels gaan tonen aan de gebruiker.

Anderzijds hebben de meeste smartphones een grotere schermresolutie dan laptops.

Tip

Via statscounter.com (opens new window) kan je verschillende statistieken bekijken van onderandere schermresoluties

# Het verschil tussen fysieke pixels en logische pixels

De ontwikkelaars van de toestellen waarop wij sites bekijken bepalen hoeveel fysieke pixels of device pixels (hardware) gelijk staan aan één logische pixel of css pixel (software). Deze verhouding heet de device pixel ratio.

Apple is hier op een bepaald moment mee begonnen toen zij hun Retina-displays lanceerden. 1 css pixel (logische pixel) bekeken op een retina scherm bestaat uit 4 fysieke pixels (device pixels). De device pixel ratio is hier 2 (horizontaal × 2 en verticaal × 2). De Samsung Galaxy S4 introduceerde een device pixel ratio van 3 waardoor elke logische pixel uit 9 fysieke pixels bestaat. De LG G3 was de eerste met een device pixel ratio van 4, net zoals de Samsung Galaxy S6.

Ter verduidelijking: zie het schema hieronder

Devices

# Waarom is dit van belang voor designers?

Een css pixel blijft steeds min of meer even groot, wat ervoor zorgt dat onze ontwerpen ongeacht de evolutie van de schermen steeds op min of meer dezelfde grootte worden weergegeven.

Positief: hogere device pixel ratio betekent in de praktijk:

  • Scherpere tekst.
  • Scherpere iconen (bitmap icons zoals die in PNG-, JPEG- of GIF-formaat, moeten hiervoor geoptimaliseerd worden. Vectoriële iconen zoals die in SVG-formaat gaan automatisch in hogere kwaliteit weergegeven worden.
  • Mogelijkheid om hoge(re) resolutie beelden te gebruiken. In onderstaand voorbeeld zie je hoe via css Media Queries (Koppelingen naar een externe site.) per minimum resolutie een andere achtergrondafbeelding kan geladen worden.
/* This is the original logo. */
/* basisresolutie 96dpi */ 
.logo {
    width: 197px; 
    height: 182px;
    /* Source image is 197px by 182px. */
    background: url('img/logo.png') no-repeat center center;
}
 
/* This will replace the logo with a 2x version on devices with a 2:1 ratio, such as Apple devices. */
@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) { 
    .logo { 
        /* Source image is 394px by 364px. */
        background-image: url('img/[email protected]');
        background-size: 197px 182px;
    }
}
 
/* This will replace the logo with a 3x version on devices with a 3:1 ratio, such as the Samsung Galaxy S5. */
@media (-webkit-min-device-pixel-ratio: 3), (min-resolution: 288dpi) { 
    .logo { 
        /* Source image is 591px by 546px. */
        background-image: url('img/[email protected]');
        background-size: 197px 182px;
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

Opmerking

Een mobile device gaan we vooral gebruiken via het mobiele netwerk. Dat (voorlopig nog) trager is dan het netwerk via wifi. Dat wil dus zeggen dat een afbeelding met een grotere pixel ratio ook een grotere bestandsgrootte zal hebben en dus trager zal laden.

Scherm resolutie Aantal pixels Bestandsgrootte[1]
1x bytes of
2x bytes of
3x bytes of

# Snelheid van inladen

De snelheid van inladen heeft dus alles te maken met enerzijds de bestandsgrootte van uw afbeelding en anderzijds de snelheid van uw netwerkverbinding.

Hoe groter de netwerksnelheid hoe sneller een website (met afbeelding) zal inladen. Stel dat je een website hebt van een fotograaf met 50 afbeeldingen die elk 1 MB groot zijn. Dan zie je hieronder hoelang het zal duren om de volledige website in te laden.

Type Technology Gemiddelde downloadsnelheid 50 MB downloaden
2G GPRS
E EDGE
3G 3G (Basic)
H HSPA
HSPA+
4G LTE Category 4
4G+ LTE-Advanced Cat6
4G+ LTE-Advanced Cat12
5G 5G
WIFI AHS Open

Opgelet

Hou er dan rekening mee dan een (megabit) niet hetzelfde is als een (megabyte).

Om een afbeelding van te downloaden in heb je een downloadsnelheid nodig van

Tip

In Chrome en Firefox Developer Edition kan je via de inspector de netwerksnelheid simuleren. Pas deze eens aan naar 3G en surf naar een website van een fotograaf (bijvoorbeeld: https://www.anvangijsegem.com/ (opens new window) ) en surf eens doorheen de website.

# Responsive resolutie switch

Via het attribuut srcset bij afbeeldingen kan je verschillende varianten doorgeven die ingeladen kunnen worden. Samen met het sizes attribuut kiest de browser dan de beste afbeelding voor het scherm van de gebruiker. Op die manier kan je ervoor zorgen dan kleinere of grotere versies van eenzelfde afbeelding worden ingeladen. Dit kan ofwel snelheidsvoordeel opleveren of voor een hogere kwaliteit zorgen bij bijvoorbeeld retina schermen.

<img src="mijn-foto-800w.jpg" alt="Dit is mijn foto">
1
<img srcset="mijn-foto-320w.jpg 320w,
             mijn-foto-480w.jpg 480w,
             mijn-foto-800w.jpg 800w"
     sizes="(max-width: 320px) 320px,
            (max-width: 480px) 440px,
            800px"
     src="mijn-foto-default.jpg" alt="Dit is mijn foto">
1
2
3
4
5
6
7

Tip

srcset is dus een set van afbeelding die je als volgt schrijft:

  • Een bestandsnaam (mijn-foto-480w.jpg)
  • Een spatie
  • De afbeeldingsgrootte in pixels (480w)
  • Een komma tussen iedere regel

sizes definieert een set van media condities (schermgroottes) en welke afbeeldingsgrootte de beste keuze is als er voldaan wordt aan de media conditie.

  • Een media conditie ((max-width:480px))
  • Een spatie
  • De breedte van de afbeelding die gebruikt zal worden indien de conditie waar is (440px)

# Alternatief via het picture element

<picture>
  <source media="(max-width: 799px)" srcset="landschapsfoto-met-persoon-480w-uitgesneden.jpg">
  <source media="(min-width: 800px)" srcset="landschapsfoto-met-persoon-800w.jpg">
  <img src="landschapsfoto-met-persoon-800w.jpg" alt="Je ziet een persoon in een landschap">
</picture>
1
2
3
4
5

  1. Ongecomprimeerde bestandsgrootte (4 bytes per pixel) ↩︎

© 2022 Arteveldehogeschool Laatst bijgewerkt: 7/1/2021 14:59:29