[spip-dev] LOGO en webp

Bonjour à tous,
Afin d’optimiser des sites SPIP, je passe sur différents outils dont par exemple ceux de google qui me demandent de passer mes PNG en webp.
La transformation ne pose pas de problème, mais impossible sous spip de remplacer mes logos PNG en WEBP, spip me dit que webp n’est pas une extension de logo autorisée.
Je peux simplement inserrer des PNG / JPG et GIF.

Avez vous déjà rencontré ce blocage ? Et parmi vous certains ont ils une méthode / astuce pour pouvoir mettre des logos en webp ?

Pour info une astuce qui consisterait à mettre mes logos en tant que document et remplacer mes insertions de LOGO_ARTICLE par des boucle de document n’est pas envisageable pour mes utilisateurs.

Merci a vous :slight_smile:
aRT

Petite information, j’ai tenté d’ajouter un SPIP_TYPES_DOCUMENTS

image.png

masi lors de l’inservtion d’un webp depuis l’interface :

J’ai le message d’erreur : suivant : Il y a 1 erreur dans votre saisie, veuillez vérifier les informations.

image.png

aRT

Bonjour,
est-ce que tu es passé par la documentation il faut peut-être s’assurer que upload est bien renseigné… Sinon, le plugin Rôles de Document permet de remplacer les logos par des documents ayant le rôle de logo sans rien changer pour les utilisateur. Juste qu’il devient possible de choisir un logo dans la médiathèque du site…

image.png

sous spip 3.2 les logos ne sont pas traités comme des documents.
tu peux dire quel formats tu autorsie en reglant la variable
$GLOBALS['formats_logos'] dans ton mes_options.php

a priori sous spip 3.3 ce sera bien le réglage via php my admin qui te permettra de faire cela, car les logos seront des document

(cela étant, je me méfie des formats d'image sauce google)

Bonjour Maïeul,

Merci pour l’info.
Je viens de tester et malheureusement c’est KO.
Je me suis peut etre trompé dans le formatage ?

“./config/mes_options.php”

<?php $GLOBALS['formats_logos']=['png','jpg','gif','webp']; ?>

image.png

Cela ne fonctionne pas… je ne vois pas pourquoi.

aRT

hum

je sais pas. Chez moi ca marchait pour limiter les logos à svg...
le formatage m'a l'air correct

aucune idée...

En effet ça ne peut pas fonctionner en l'état, le sujet a déjà été abordé ici https://core.spip.net/issues/3958#note-3 et là https://github.com/seenthis/seenthis_squelettes/issues/13#issuecomment-510776860 pour plus de détails.

Je prépare un ticket dédié à ce sujet dès que j'ai un moment.

Hello,

est-ce que je me trompe ou bien le problème de base c’est quand même que si on utilise des logos en webp les filtres images de fonctionneront pas dessus et donc potentiellement les squelettes sont cassés ?

Je pense qu’en effet il serait opportun de commencer à réflechir à introduire webp (je suis prudent, car pour info ce n’est toujours pas supporté par Safari et donc iOS https://caniuse.com/#search=webp) mais ça suppose de gérer le support dans les filtres images pour qu’on puisse l’utiliser comme les autres images...

Effectivement, on ne peut pas travailler à partir de WebP, ni le livrer comme format d’office, puisque c’est refusé sur iOS notamment.

Ce que je fais de mon côté, c’est que je fabrique les WebP dans image_responsive à partir des versions Jpeg (qui restent la norme), ce qui fait qu’ils sont servis dans les sources de <picture>. Donc en pratique, je travaille exactement comme avant avec les JPEG, et c’est au niveau es squelettes, avec image_responsive, que les WebP sont fabriqués automatiquement et livrés sous une forme qui fait qu’ils passent nickel sous Chrome et Firefox, et qu’iOS continue avec les JPEG.

                            <picture style='padding:0;padding-bottom:66.711229946524%' class='conteneur_image_responsive_h'>
                                <!--[if IE 9]><video style='display: none;'><![endif]-->
                                <source srcset='local/cache-responsive/cache-300/ba9d5372068e77f0f1ccdb99f98fa039.png.webp?1589575322 1x,local/cache-responsive/cache-600/ba9d5372068e77f0f1ccdb99f98fa039.png.webp?1589575322 2x' type='image/webp'>
                                <source srcset='local/cache-responsive/cache-300/ba9d5372068e77f0f1ccdb99f98fa039.png?1589575322 1x,local/cache-responsive/cache-600/ba9d5372068e77f0f1ccdb99f98fa039.png?1589575322 2x' type='image/jpeg'>
                                <!--[if IE 9]></video><![endif]-->
                                <img loading='lazy' lazyload='1' class='image_responsive avec_picturefill' alt='' src='local/cache-responsive/cache-300/ba9d5372068e77f0f1ccdb99f98fa039.png?1589575322' data-src='local/cache-gd2/ef/66e9467473bbb3d76717f4c5ffe7a6.png' data-l='748' data-h='499' data-tailles='[\&#034;300\&#034;]'/>
                            </picture>

Un détail pas du tout marrant: j’ai un site qui fabrique énormément d’images, et notamment des PNG. Et j’ai constaté que GD2 fabriquait une quantité astronomique de fichiers PNG corrompus. En revanche, le code de GD2 qui fabrique des WepP n’a produit rigoureusement aucune image corrompue. J’ai l’impression qu’il y a une énorme différence de qualité de code entre les deux fonctions…

ARNO*

Salut

Une autre solution c’est de proposé le webp aux navigateurs qui l’accepte.

Ce que je fais sur mes hébergements dans leur htacess :

RewriteCond %{HTTP_ACCEPT} image/webp
RewriteCond %{REQUEST_URI}  (?i)(.*)(\.jpe?g|\.png)$
RewriteCond %{DOCUMENT_ROOT}%1.webp -f
RewriteRule (?i)(.*)(\.jpe?g|\.png)$ %1%2\.webp [L,T=image/webp,R]

Si le navigateur accepte le webp et qu’elle existe on le lui envoie au lieu du png ou jpg. Cela évite de modifier le comportement natif de spip

En complément j’ai un script d’optimisation qui génère périodiquement les webp. (dont les versions modifiée par les filtres images)
Entre autre je m’appuie sur une version patchée de

Km