Maintenant vous savez incorporer une image bitmap dans un document Inkscape mais vous savez aussi créer un document Inkscape avec l'équivalent vectoriel de l'image matricielle.
Par contre vous ne savez pas encore produire un document Inkscape avec les deux versions de l'image (matricielle et vectorielle).
C'est ce que je vais vous montrer dans cet article.
Objectif : un document Inkscape représentant une toile de Buffet doit être intégré dans une page Web.
En cliquant sur la légende le visiteur passe de l'original matriciel à la copie vectorielle (et vice-versa).
Attention le logiciel Inkscape n'est pas capable de rajouter au fichier du code CSS et JavaScript.
Il est nécessaire d'utiliser un éditeur de textes tel NotePad.
On obtient alors un avec un seul calque mais avec deux parties bien distinctes !
Un extrait du code :
Ce code est assez lourd. Ce qu'il faut retenir c'est qu'il est basé sur la balise IMAGE.
Cette balise permet en effet non seulement de créer un lien vers l'image source dans le cadre d'une liaison mais aussi d'incorporer une
image matricielle dans un document Inkscape.
Je veux que par défaut ce soit la version matricielle de l'image qui s'affiche mais que le visiteur puisse obtenir par un simple clic le croquis vectoriel correspondant.
Je dois compléter le code SVG, rajouter un peu de CSS mais aussi du JavaScript.
Je dois modifier les attributs width & height de la balise SVG dans le cadre d'une image adaptative.
Le code correspondant à l'image matricielle doit être un premier calque et la version matricielle dans un second.
Par défaut le premier calque est visible et le second est masqué.
Je dois rajouter un bouton de commande légendé.
Je dois rajouter un script qui s'exécute sur un clic du bouton de commande.
Notez bien que pour le premier calque j'ai rajouté : display : inline et pour le second : display : none.
Par ailleurs les deux calques ont été identifiés "calque1" et "calque2". Cette identification est indispensable dans le cadre de la programmation JS.
Le code de la fonction JS ne pose pas de difficulté et repose sur un algorithme très simple. Si "calque1" est affiché il faut le masquer et afficher "calque2" sinon il faut l'afficher et masquer l'autre.
Hélas Inkscape ne dispose d'un outil d'optimisation du code.
Je suis donc obligé de faire appel à l'outil en ligne SVG EDITOR créé par Peter Collingridge.
URL de l'outil en ligne
Il suffit de sélectionner tout le code du fichier SVG puis de le coller dans la zone de texte "paste" de l'onglet "input".
Puis il faut passer à l'onglet "optimize" et opter pour "conservative"
Cliquez sur le bouton "download" pour télécharger la version optimisée.
Le site vous adresse un fichier "optimised.svg".
Le fichier SVG non optimisé faisait près de 300 KO. la version retournée par SVG EDITOR fait 230 KO. Le gain de poids n'est pas négligeable.
L'outil simplifie le code SVG mais ne touche pas au JavaScript.
Le fichier SVG optimisé est maintenant inséré dans la page Web.
Cliquez sur le texte pour basculer en croquis vectoriel et vice/versa.
Attention ce fichier SVG contient un script donc il faut l'incorporer avec la balise OBJECT (avec la balise IMG le script serait bloqué).
Le code d'insertion dans la page est donc le suivant :