Re: Les SVG sont des images comme les autres
Charles Razack <[email protected]>
| Newsgroups | gmane.comp.web.spip.devel |
|---|---|
| Message-ID | <[email protected]> |
Complément d'enquête : des fois on ne sait pas à l'avance à quel type
d'image on a affaire.
Si c'est un svg, on aimerait qu'il soit embeddé (donc |balise_svg),
sinon on veut le tag <img> normal (donc |balise_img).
Ça amène à faire des tests dans les squelettes de la sorte :
[(#EXTENSION}|=={svg}|oui) [(#FICHIER|balise_svg)] ]
[(#EXTENSION}|=={svg}|non) [(#FICHIER|balise_img)] ]
Dans ces cas là il serait pratique d'avoir un filtre qui fasse ça
automatiquement.
Sémantiquement, je ne sais pas quel serait le nom le plus approprié,
peut-être « balise_image » tout simplement : ça ne présuppose pas du tag
qui va être produit (<img> ou <svg>), ça dépend de l'image.
Un exemple de fonction que j'utilise de mon côté :
http://spip.pastebin.fr/58813
if (!function_exists('filtre_balise_img_svg')) {
functionfiltre_balise_img_svg($src, $alt='', $class='') {
include_spip('inc/filtres');
$balise ='';
// Récupérer le chemin si c'est déjà un tag <img>
if (substr(trim($src), 0, 4) ==='<img') {
$src =extraire_attribut($src, 'src');
}
// Retrouver l'extension
$src =supprimer_timestamp($src);
$extension =pathinfo($src, PATHINFO_EXTENSION);
// Si c'est un svg, on embed
if ($extension ==='svg') {
$balise =filtrer('balise_svg', $src, $alt, $class);
// Sinon, balise_img si pas déjà le cas
} else {
$balise =filtrer('balise_img', $src, $alt, $class);
}
return $balise;
}
}
Le 15/10/2019 à 21:19, nicod_ a écrit :
> Un autre truc que je remarque à l'usage : sur un svg qui n'a pas
> d'attribut width dans le <svg>, image_reduire n'applique rien du tout.
>
> Alors oui, on peut styler les svg en css, mais c'est moins propre :
> quand tu affiches la page sans css par exemple, le svg perd sa dimension.
>
> Je m'attendrais à ce que image_reduire ajoute un attribut width, qu'en
> pensez vous ?
>
> Autre truc : on peut enchainer balise_img et image_reduire, mais pas
> avec balise_svg
> #CHEMIN{images/machin.png}|balise_img|image_reduire{5} OK
> #CHEMIN{images/machin.svg}|balise_svg|image_reduire{5} Pas de réduction
>
> Là aussi, je m'attendrais à ce que le fonctionnement soit similaire non ?
>