Les filtres |balise_img et |balise_svg sont survitamines :

spip/spip
-
Par Cerdic, le 4 mars 2021 à 11h16min :

Les filtres |balise_img et |balise_svg sont survitamines :
- le filtre |balise_img peut prendre en premier argument une balise img deja formee si besoin - ie issue d'un filtre image :
  `[(#FICHIER|image_reduire{200,200}|balise_img{'un nuage','spip_logo'})]`
- idem pour le filtre |balise_svg qui peut avoir en premier argument une balise svg inline deja preparee

Mais surtout :
- les 2 filtrez peuvent prendre un dernier argument size pour forcer la taille sous plusieurs formes :
  * `@1.5x`, `@2x` ou `@3x` permet de forcer une densite de 1.5, 2 ou 3 (on reprend la convention generique de nommage des assets)
    une image de largeur 200px affichee avec un `@2x` aura donc un attribut `width='100'`
  * Un nombre seul comme `64` pour forcer une image carree avec `width='64' height='64'`
  * Une largeur ET une hauteur sour la forme `1024x640` pour avoir un `width='1024' height='640'`
  * Une largeur seule et une hauteur automatique sous la forme '1024x*` pour avoir donc un `width='1024'` et un height ajuste automatiquement pour respecter les proportions initiales de l'image

Pour faciliter l'utilisation des 2 filtres, l'argument de taille (optionnel) arrive toujours en dernier, meme si on ne precise pas de alt ou de class :
`[(#FICHIER|balise_img{1024x640})]`
`[(#FICHIER|balise_img{'un nuage',1024x640})]`
`[(#FICHIER|balise_img{'un nuage','spip_logo',1024x640})]`

Mais si jamais le alt ou la class sont ambigus et peuvent etre interpretes comme une taille (a priori tres invraisemblable pour la class), il suffit d'indiquer une taille vide pour lever l'ambiguite :
`[(#FICHIER|balise_img{'@2x','',''})]`

Le filtre |balise_img peut donc ainsi facilement etre utilise pour ajuster l'affichage d'image en x2 ou x3 pour prendre en compte les ecrans retina :
`[(#FICHIER|image_reduire{400,400}|balise_img{'Mon image HD',@2x})]`

De même le filtre |balise_svg pourra être utilisé pour ajuster simplement la taille d'un svg inline

Au passage la fonction `taille_image()` fonctionne aussi sur un SVG inline

*Modifié*
    ecrire/inc/filtres.php

Détails : https://git.spip.net/spip/spip/commit/5c40d310ce6637440545370eba9c6c755548f140