publié le mer. 20 décembre 2017

Comme nous l'avons vu précédemment, il existe deux grands types de formats d'images:

Ces deux types d'images peuvent être intégrées dans une page web grâce à la balise <img>, mais elles peuvent être aussi codées directement dans la page grâce aux balises <svg> et <canvas>.

Nous nous intéressons en seconde uniquement au dessin vectoriel en svg.

Le format svg

SVG Logo

Le format svg est un format d'image vectoriel proposé par le W3C.

Dans ce format, les dessins sont décrits par un ensemble formes géométriques simples (arcs de cercle ou d'ellipse, segments de droite, courbes de Bézier...). Il s'agit donc bien d'un format vectoriel puisqu'il code des formes et ne donne pas l'état de chacun des pixels de l'image.

Bien entendu, lorsque l'image est rendue sur un écran, l'encodage en pixel est réalisé avant l'affichage par le visionneur d'images ou le navigateur.

Syntaxe

Le fichier svg est un fichier xml descriptif qui indique les formes présentes dans l'image(rect pour rectangle, circle pour cercle,...)

Exemple:

Créer un fichier texte appelé dessin.svg avec le contenu suivant.

<?xml version="1.0" standalone="no"?>
<svg width="500" height="500" version="1.1" xmlns="http://www.w3.org/2000/svg">
  <!-- Un beau smiley pour commencer -->
  <circle cx="250" cy="250" r="200" stroke="green" stroke-width="7" fill="yellow"/>
  <circle cx="150" cy="200" r="20" fill="black"/>
  <circle cx="350" cy="200" r="20" fill="black"/>
  <!-- Pour la bouche c'est plus compliqué-->
  <ellipse cx="250" cy="350" rx="100" ry="25"/>
</svg>

Lorsque vous ouvrez ce fichier avec une visionneuse d'images ou le navigateur, vous devriez obtenir l'image suivante:

Essayez modifier certains des paramètres du fichier svg pour vous familiariser avec sa syntaxe, vous pourrez parfaire votre connaissance en utilisant cette page du Tutoriel sur MDN

Intégration au sein d'une page html

Il peut être intégré à des pages web soit:

<img src="dessin.svg">
<!doctype html>
<html>

  <body>

    <h1>Un dessin vectoriel en svg</h1>

    <svg width="200" height="200" style="background-color: lightgray;">
      <circle cx="50%" cy="50%" r="40%" stroke="green" stroke-width="3%" fill="yellow" />
    </svg>

  </body>

</html>

RENDU:

Quelques exemples de formes

Cet exemple est extrait du tutoriel sur le svg sur MDN.

<?xml version="1.0" standalone="no"?>
<svg width="110" height="250" version="1.1" xmlns="http://www.w3.org/2000/svg">

  <rect x="10" y="10" width="30" height="30" stroke="black" fill="transparent" stroke-width="5"/>
  <rect x="60" y="10" rx="10" ry="10" width="30" height="30" stroke="black" fill="transparent" stroke-width="5"/>

  <circle cx="25" cy="75" r="20" stroke="red" fill="transparent" stroke-width="5"/>
  <ellipse cx="75" cy="75" rx="20" ry="5" stroke="red" fill="transparent" stroke-width="5"/>

  <line x1="10" x2="50" y1="110" y2="150" stroke="orange" fill="transparent" stroke-width="5"/>
  <polyline points="60 110 65 120 70 115 75 130 80 125 85 140 90 135 95 150 100 145"
      stroke="orange" fill="transparent" stroke-width="5"/>

  <polygon points="50 160 55 180 70 180 60 190 65 205 50 195 35 205 40 190 30 180 45 180"
      stroke="green" fill="transparent" stroke-width="5"/>

  <path d="M20,230 Q40,205 50,230 T90,230" fill="none" stroke="blue" stroke-width="5"/>
</svg>

RENDU

Où trouver des sources ?

Le svg est trè largement traité depuis qu'il est supporté par tous les navigateurs modernes, je vous conseille deux sources:

Matière: icn Mots-clés: svg