Aller au contenu

Cours 4

Formats d’image

Il existe deux types d’images utilisés en Web : les images vectorielles et les images matricielles (ou bitmap en anglais).

Vectoriel

Les images vectorielles sont décrites par des équations mathématiques. Elles indiquent au navigateur comment dessiner l’image : « trace une ligne entre ces deux points », « dessine une courbe de Bézier entre ces coordonnées », etc. Ce système leur permet de rester nettes quelle que soit la taille d’affichage.

Comme personne ne s'amuse à faire des maths pour dessiner une image, plusieurs outils spécialisés servent à gérer assez simplement les images vectorielles :

svg

En Web, le format vectoriel le plus courant est le SVG.

Exemple de svg
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-heart-fill" viewBox="0 0 16 16">
  <path fill-rule="evenodd" d="M8 1.314C12.438-3.248 23.534 4.735 8 15-7.534 4.736 3.562-3.248 8 1.314"/>
</svg>
https://icons.getbootstrap.com/icons/heart-fill/

Matriciel (bitmap)

Les images matricielles, quant à elles, sont composées de pixels. C’est comme un tableau dans lequel chaque case représente un pixel avec sa couleur.

Lorsqu’on agrandit ce type d'image, on perd en qualité, car les pixels deviennent visibles. C’est ce qu’on appelle la pixellisation 😡.

Plus une image est en haute définition, plus elle contient de pixels dans un même espace. Cependant, plus une image contient de pixels, plus sont poids augmente.

Les formats courants sont :

Format Description
.jpg ou .jpeg Compression avec perte. Idéal pour les photos. Pas de transparence.
.png Compression sans perte. Supporte la transparence alpha.
.gif 256 couleurs maximum. Supporte l’animation et la transparence binaire.
.webp / .avif Format moderne au poids optimisé. Très léger.

Ces formats sont généralement produits avec des outils comme :

Exercice éclair

Observe les deux images ci-dessous. Peux-tu identifier laquelle est une image vectorielle et laquelle est matricielle ?

A
B

Types de transparence

Il existe deux types de transparence : alpha et binaire.

  • La transparence binaire signifie qu’un pixel est soit totalement opaque, soit totalement transparent. Il n’y a pas d'entre deux.
  • La transparence alpha permet d'avoir des pixels partiellement transparents.

Voici un exemple de la même image enregistrée en .png et en .gif :

Transparence alpha (png)

Transparence binaire (gif)

Compression d'image

En Web, le poids des images est critique : plus une image est lourde, plus elle ralentit le chargement d’un site.

Assurez-vous d'optimiser le poids de vos images avec un outil comme TinyPNG.

Audio

Balise : <audio>

Exemple le plus simple
<audio controls src="musique.mp3"></audio>

Attributs

  • controls : Affiche les contrôles du lecteur (lecture, pause, volume). Pas obligatoire, mais un peu oui ;), sinon le lecteur ne s'affichera pas.
  • loop : Fait jouer l’audio en boucle.
  • muted : L’audio est désactivé.

C'est possible aussi d'utiliser une méthode de chargement avec la balise <source>.

Cette méthode permet de fournir plusieurs formats au navigateur et le laisse choisir celui qui est compatible. Celui-ci commence par essayer la lecture du premier format. S'il n'est pas compatible, il essaye le deuxième et ainsi de suite. C'est ce qu'on appelle des fallback.

Formats Audio

Tout comme pour les images, il existe différents formats audio. Certains sont universels, d’autres plus modernes et plus légers.

Recommandation : webm + mp3

Utiliser le format .webm. C'est un format très efficace avec une bonne qualité audio.

En fallback, utiliser .mp3 pour une compatibilité maximale.


Certes, d’autres formats existent (ex. : .wav (qualité brute mais trop lourd) ou .aac (plus pour iOS/Safari)), mais dans la majorité des cas, le combo .webm et .mp3 est idéal.

Vidéo

Balise : <video>

Exemple minimal
<video src="video.mp4"></video>

Il est aussi possible d’utiliser une ou plusieurs balises enfants <source> :

Usage de la balise source
<video>
  <source src="video.mp4" type="video/mp4">
</video>

Cette méthode permet de définir plusieurs formats. Ainsi, si le navigateur est incapable de lire le premier format, il tente le suivant :

Exemple avec Fallback
<video>
  <source src="video.mp4" type="video/mp4">
  <source src="video.webm" type="video/webm">
  <p>
    Votre navigateur ne supporte pas la vidéo HTML.
    <a href="video.mp4" download>Télécharger la vidéo</a>.
  </p>
</video>

Compatibilité

Si vous ne désirez pas fournir plusieurs formats, sachez que les .mp4 sont supportés par tous les navigateurs.

Attributs

Les attributs de video sont les suivant : controls, autoplay, loop, muted, poster, width, height

controls

Affiche les contrôles du lecteur (lecture, pause, volume, etc.).

🍎 Il est préférable de toujours l’activer.

<video src="video.mp4" controls></video>

poster

Par défaut, une vidéo affiche la première image de sa source.

On peut forcer une autre image d’aperçu avec poster :

<video src="video.mp4" poster="preview.jpg" controls></video>

loop

Joue la vidéo en boucle 🔁

<video src="video.mp4" loop controls></video>

muted

Démarre la vidéo en mode silencieux 🔇

<video src="video.mp4" muted controls></video>

autoplay

Demande au navigateur de démarrer automatiquement la vidéo.

<video src="video.mp4" autoplay muted></video>

Attention

La plupart des navigateurs bloqueront l’autoplay si la vidéo n’est pas muette. Si l’utilisateur a déjà interagi avec la page Web, le navigateur peut choisir d’honorer l’autoplay.

playsinline

Sur plusieurs appareils mobiles 📱, les vidéos passent automatiquement en plein écran.

playsinline permet de garder la vidéo intégrée à la page.

<video src="video.mp4" playsinline controls></video>

Formats vidéo

Tout comme pour l’audio, il existe différents formats vidéo.

Recommandation : webm + mp4

Utiliser le format .webm. C'est un format très efficace avec une bonne qualité vidéo.

En fallback, utiliser .mp4 pour une compatibilité maximale.

Optimisation des vidéos

  • Toujours compresser avant publication (ex. : HandBrake).
  • Éviter les vidéos trop lourdes (ex. > 50 Mo). Privilégier un hébergement externe (YouTube, Vimeo).

Les figures 👺

La balise <figure> permet d'associer une information (image, vidéo, diagramme, etc.) à une légende <figcaption>. C'est très pratique pour associer visuellement une formation avec un média par exemple. De plus, c'est la façon sémantique de le faire 👌

<figure>
  <img src="lune.jpg" alt="La Lune vue de la Terre">
  <figcaption>La Lune, notre unique satellite naturel.</figcaption>
</figure>

Intégration de contenus externes

Balise : <iframe>

La balise <iframe> représente un contexte de navigation imbriqué qui permet d'obtenir une page HTML intégrée dans la page courante.

⚠️ Bien que visible à l’écran, cette page intégrée bénéficie de son propre contexte d’exécution. Cela signifie que :

  • Les styles CSS et scripts JavaScript de la page parent n’ont aucun effet sur la page enfant.
  • Inversement, les styles et scripts de la page enfant n’affectent pas la page parent.
Exemple minimal
<iframe src="https://site.com"></iframe>

Attributs

title

L'attribut title, bien que non obligatoire, est fortement recommandé puisqu'il permet de fournir une description du contenu du iFrame aux personnes utilisant une assistance vocale afin de naviguer sur la page.

<iframe src="https://site.com" title="Démo iFrame"></iframe>

width et height

Permettent de définir la taille de l’iframe.

<iframe src="https://site.com" width="600" height="400"></iframe>

allowfullscreen

Autorise l’affichage en plein écran (utile pour les vidéos).

<iframe src="https://www.youtube.com/embed/dQw4w9WgXcQ" allowfullscreen></iframe>

loading="lazy"

Permet de charger l’iframe uniquement lorsqu’elle entre dans le champ de vision de l’utilisateur.

<iframe src="https://site.com" loading="lazy"></iframe>

Exemples concrets

Plusieurs sites Web offrent des options pour utiliser leur contenu dans notre site web. Ces options sont souvent accessibles via un bouton de partage.

Vidéo YouTube
<iframe width="560" height="315" 
src="https://www.youtube.com/embed/dQw4w9WgXcQ?si=HQmwAnJfvdN8HPwg" 
title="YouTube video player" 
frameborder="0" 
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" 
referrerpolicy="strict-origin-when-cross-origin" 
allowfullscreen></iframe>
openstreetmap
<iframe width="425" height="350"
src="https://www.openstreetmap.org/export/embed.html?bbox=-73.73120069503786%2C45.554418475852586%2C-73.71317625045778%2C45.56543096959684&amp;layer=mapnik"></iframe>

Citations

Balise Usage
<q> Courte citation à l’intérieur d’un paragraphe
<blockquote> Citation longue en bloc
<cite> Source d’une œuvre ou citation

q

La balise <q> permet d'insérer dans un texte une courte citation sans créer un nouveau bloc de contenu.

Par défaut, la majorité des navigateurs ajoutent des guillemets anglophones autour de la balise <q> afin de la faire ressortir du texte régulier.

blockquote

La balise <blockquote> permet de définir un bloc de citation relativement long.

Par défaut, la majorité des navigateurs ajoutent un espacement à gauche de la citation afin de faire ressortir ce contenu du texte régulier.

cite

La balise <cite> permet de spécifier la source d'une citation.

Généralement, cette balise est inclus dans une balise <footer> pour indiquer qu'il s'agit en quelque sorte da la note de pied de page de la citation.

Par défaut, la majorité des navigateurs mettent en italique le contenu des balises <cite> afin de les différencier de la citation elle-même.

Exercices

Exercice - HTML
Galapagos

Exercice - HTML
La la land

Travail pratique

TP1 - Première partie
Planification