Partager cet article :

Blog
Aug 08, 20238 min read

Drupal 9 convertit les images au format WebP

Vasil Boychev

Responsable de zone - Benelux

Drupal 9 convertit les images au format WebP

Qu'est-ce que WebP et quels sont ses avantages ?

Pendant longtemps, le format JPG a été considéré comme la norme pour les données d'image sur le web. Cependant, en 2013, Google (avec un groupe d'autres développeurs open source) a pu développer WebP, une nouvelle technique d'encodage d'images qui vise à compresser les images plus petites que JPG tout en conservant la qualité de l'image.

WebP est un format d'image contemporain pour le web qui offre une meilleure compression sans perte. Les webmasters et les développeurs web peuvent utiliser WebP pour créer des images plus petites et plus riches qui se chargent plus rapidement sur le web.

Par rapport aux PNG, les images WebP sans perte sont 26 % plus petites. Pour le même indice de qualité SSIM, les images WebP avec perte sont de 25 à 34 % plus petites que les images JPEG équivalentes.

La transparence est prise en charge par le WebP sans perte au prix d'une augmentation de seulement 22 % des données. Lorsque la compression RVB avec perte est acceptable, le WebP avec perte offre également la transparence, ce qui permet d'obtenir des fichiers trois fois moins volumineux que le PNG.

Lire les questions fréquemment posées sur WebP.

Comment implémenter le format WebP pour toutes les images d'un site Drupal 9 ?

Il y a trois étapes principales à suivre :
  1. Configurer la prise en charge du format webp par le serveur.
  2. Installer et configurer les modules Imagemagick et WebP de Drupal.
  3. Ajouter l'effet "Convertir en WEBP" aux styles d'images concernés.

1. Configurer la prise en charge du format WebP par le serveur.

Nous devons nous assurer que le serveur supporte le WebP. Pour ce faire, nous pouvons utiliser deux extensions php différentes, imagick et gd. Elles permettent toutes deux de convertir des images au format WebP. La différence se situe uniquement au niveau de la configuration dans les étapes suivantes. Nous commencerons par l'extension gd, puis nous nous pencherons sur imagick.

Extension GD:
Tout d'abord, vous devez vérifier votre fichier php.ini. Vous devez trouver :

extension=php_gd2.dll

ou

xtension=php_gd.dll.

Ensuite, redémarrez votre serveur pour appliquer les changements. Si vous ne trouvez pas cette extension dans votre fichier php.ini, vous devez l'ajouter à votre environnement.

Il se présentera comme suit :

sudo apt-get update 
sudo apt-get install php-gd

GD extension: Dans l'environnement DDEV, vous devez configurer DDEV Hook. Vous pouvez configurer hook post start en ajoutant des paramètres supplémentaires dans .ddev/config.yaml.

hooks:
post-start:

- exec : sudo apt-get update 
- exec : sudo apt-get install php-gd

En utilisant les hooks, vous pouvez exécuter des commandes linux dans l'environnement DDEV.

Si vous avez effectué correctement les étapes décrites dans cette section, vous verrez un nouveau bloc dans phpinfo().

Il se présentera comme suit :

Cette section vous indiquera que l'extension gd a été installée avec succès. Vous devez vérifier ici si la prise en charge de WebP est activée.

GD

Imagick:
Imagick est une autre bibliothèque que vous pouvez utiliser pour les manipulations d'images. L'installation d'imagick est à peu près basée sur ce que nous avons vu dans la section précédente.

sudo apt-get update 
sudo apt-get install php-imagick

Ou l'exemple de DDEV :

hooks:
post-start:

- exec : sudo apt-get update 
- exec : sudo apt-get install php-imagick

Vous pouvez vérifier si imagick a été installé avec succès en utilisant la commande suivante

php -m | grep imagick

Après la dernière manipulation, vous devrez redémarrer votre serveur web, très probablement apache.

Si tout est fait de la bonne manière, vous obtiendrez quelque chose comme :

imagick

Remarque :

Dans les sections décrites ci-dessus, vous devez vérifier si le support WEBP est activé pour PHP. Si vous ne trouvez pas le support ou le format WebP listé dans la section précédente, vous devrez l'installer manuellement via cette commande :

sudo apt-get update 
sudo apt-get install -y webp

Et encore une fois, redémarrez votre serveur web.

2. Installer et configurer les modules Imagemagick et WebP de Drupal.

Jusqu'ici tout va bien, nous avons déjà un environnement configuré. J'espère que vous avez terminé l'étape précédente sans problème. Si ce n'est pas le cas, recommencez !

Nous examinerons ensuite deux modules que nous devrons installer et configurer pour définir la conversion des images.

Bien, procédons à l'installation des deux modules dont nous avons besoin. Le premier - Imagemagick.

composer require drupal/imagemagick

drush en imagemagick -y

Et le second - WebP.

composer require drupal/webp

drush en webp -y

Après avoir installé et activé tous les modules, lancez drush cr, pour reconstruire le cache.

Le module WebP fournit l'extension du convertisseur WEBP dans les effets de style d'image, que nous allons présenter un peu plus loin. Aucune configuration n'est nécessaire pour le module WebP. Nous allons configurer le module ImageMagick à la place.

Le module ImageMagick a deux façons de se configurer. Nous allons couvrir les deux dans cette section. Dans la section précédente, vous avez choisi une bibliothèque php pour la manipulation d'images gd/imagick, à ce stade, vous devrez configurer le module ImageMagick en fonction de votre choix.

Nous allons d'abord examiner les étapes de la configuration d'imagick :

Naviguez jusqu'à : /admin/config/media/image-toolkit

Si vous choisissez la bibliothèque Imagick, vous devrez choisir la première option ImageMagick image toolkit. Vous devez également définir la qualité de l'image.

L'option Qualité de l'image réduit la qualité de l'image au pourcentage que vous avez choisi. Notez que si vous réduisez trop la qualité de l'image, l'image ne sera pas belle. Vous devrez jouer avec cette option.

Vous devez également définir un chemin d'accès au dossier bin d'imagiMagick qui utilisera le module pour convertir les images. Vous pouvez télécharger l'extension en fonction de votre système d'exploitation. Ensuite, extrayez tous les éléments de ce dossier dans l'emplacement de votre choix sur votre serveur. Saisissez le chemin d'accès au dossier bin dans le champ "Chemin d'accès à l'exécutable du paquet" du kit d'outils d'image et c'est tout.

image toolkit page

Dans l'étape suivante, nous devons définir les formats d'image que nous utiliserons. Notez que vous pouvez activer ou désactiver les formats d'image que vous souhaitez utiliser.

image formats page

Voyons maintenant comment configurer imagemagick avec l'extension GD2 :

Si vous choisissez le processeur gd pour la manipulation des images, il vous suffit de définir "GD2 image manipulation toolkit" dans les options de la boîte à outils de l'image.

image toolkit settings

N'oubliez pas de lancer drush cr après avoir appliqué les paramètres du module pour reconstruire le cache de drupal.

3. Ajoutez l'effet "Convert to WEBP" aux styles d'images concernés.

Ok, nous avons déjà le support WebP sur notre serveur, maintenant nous devons configurer la conversion des images au format WebP en ajoutant des convertisseurs dans tous les styles d'images.

Ouvrez : /admin/config/media/image-styles, et créez un nouveau style d'image.
  ;

image styles

Et saisissez un nom, par exemple "Processus d'image".

image style naming

Et cliquez sur Créer un nouveau style.

Dans ce nouveau style d'image, nous devons créer un convertisseur pour nos images.

Sélectionnez Convertir dans la liste déroulante et cliquez sur Ajouter.

image style name

Sur la page suivante, sélectionnez l'option WebP dans le menu déroulant et cliquez sur Ajouter un effet. Le module WebP déjà installé nous donne ici l'extension WEBP :

convert an image between extensions

Si vous souhaitez appliquer le nouvel effet à des styles d'image existants, procédez de la même manière.

Bonus : Appliquer un style d'image nouvellement créé dans Twig

À ce stade, nous devons comprendre que le format WebP ne sera appliqué qu'aux images qui utilisent un style d'image. Pour tous les autres cas, nous devrons appliquer le style d'image manuellement dans le code. Par exemple - dans twig. Il est fort probable que les images implémentées n'utilisent aucun style d'image. Heureusement, nous pouvons appliquer un style d'image particulier directement dans Twig.

Pour récupérer les images que nous avons ajoutées dans un style comme l'arrière-plan ou dans un modèle twig, nous devons définir le style d'image à l'aide de la fonction twig image_style() en utilisant le style d'image 'image_process' que nous avons créé précédemment. Veuillez noter que nous devons indiquer le nom de la machine du style d'image dans la fonction image_style().

Pour trouver le nom de machine de votre style d'image que nous avons déjà créé, vous devez ouvrir le style d'image dans le panneau d'administration de Drupal 9 et regarder l'url.

Vous verrez quelque chose comme :

Le dernier argument de l'url est le nom de votre machine de style d'image que vous pouvez utiliser comme paramètre de image_style().

style machine name

Si nous voulons ajouter un style d'image en css dans l'arrière-plan de twig, cela ressemblerait à ce qui suit :

background-image : url({{'public://image_folder/image.jpg' | image_style('image_process')}}) ;

Pour obtenir le dossier des images, vous devez utiliser la variable public:// qui représente la destination des fichiers publics, généralement 'sites/default/files'.

Ou si vous voulez ajouter un style d'image à l'uri d'un champ twig, cela ressemblerait à ceci :

background-image : url('{{ file_url(content.field_image.0['#media'].field_media_image.entity.fileuri | image_style('image_process')) }}') ;

Remarque :

Si vous voulez l'utiliser avec un champ média twig, vous devez obtenir l'uri du champ média.

En conclusion

WebP est capable de porter la compression des données à un niveau supérieur grâce à l'inclusion d'un mode de prédiction dans le processus JPG, ce qui permet de voir clairement comment il peut surpasser son homologue basé sur JPG. Et nous avons les résultats pour le prouver

Avant

before image size

Après

after image size

Avant

before performance result

Après
after performance result

S'ABONNER À NOTRE NEWSLETTER

Partager cet article :

S'ABONNER À NOTRE NEWSLETTER

Articles de blog connexes

    Pourquoi les startups hésitent à travailler avec une agence de développement de logiciels sur mesure - et comment nous répondons à toutes leurs préoccupations

    Blog

    Pourquoi les startups hésitent à travailler avec une agence de développement de logiciels sur mesure - et comment nous répondons à toutes leurs préoccupations

    <p>Les startups hésitent souvent à travailler avec des agences de logiciels pour des raisons de coût, de contrôle et de flexibilité. Découvrez comment les solutions logicielles sur mesure de Bulcode relèvent chaque défi, garantissant ainsi croissance et agilité.</p>

    Écrit par Svetoslava Angelova
    Nov 05, 20247 min read
    Construire une équipe Agile performante : Notre approche éprouvée

    Blog

    Construire une équipe Agile performante : Notre approche éprouvée

    Découvrez comment nous construisons des équipes Agile performantes en définissant des rôles clairs, en favorisant la collaboration et en utilisant des outils flexibles.

    Écrit par Svetoslava Angelova
    Aug 27, 202411 min read
    Drupal 11 : à quoi s'attendre ? Guide complet des nouvelles fonctionnalités et des améliorations

    Blog

    Drupal 11 : à quoi s'attendre ? Guide complet des nouvelles fonctionnalités et des améliorations

    Drupal 11 est sorti ! Dans cet article, découvrez ses fonctionnalités et améliorations passionnantes. Mettez-le à jour dès maintenant pour redéfinir votre stratégie numérique avec l'aide des experts de Bulcode.

    Écrit par Svetoslava Angelova
    Aug 05, 20249 min read
    Composants d'annuaire unique dans Drupal core : Une vue d'ensemble

    Blog

    Composants d'annuaire unique dans Drupal core : Une vue d'ensemble

    Découvrez comment les composants à répertoire unique (SDC) de Drupal Core rationalisent le processus de développement en encapsulant les fichiers liés aux composants dans un répertoire unique. Découvrez les avantages des SDC et suivez un guide étape par étape pour les mettre en œuvre dans vos projets Drupal.

    Écrit par Nikolay Tsekov
    Aug 07, 20244 min read
    Événements SCRUM

    Blog

    Événements SCRUM

    Scrum définit plusieurs événements (parfois appelés cérémonies) qui se déroulent au cours de chaque sprint : la planification du sprint, la mêlée quotidienne, la revue du sprint et la rétrospective du sprint.

    Écrit par Svetoslava Angelova
    Aug 07, 20233 min read
    Artéfacts Scrum

    Blog

    Artéfacts Scrum

    Dans le domaine du développement logiciel, le terme "artefact" fait référence aux informations que les parties prenantes et l'équipe scrum utilisent pour décrire un produit en cours de développement.

    Écrit par Svetoslava Angelova
    Aug 07, 20232 min read
    Drupal sans tête avec Next.js - un exemple simple à suivre

    Blog

    Drupal sans tête avec Next.js - un exemple simple à suivre

    La tendance récente, dans le développement web en général, et par conséquent dans le développement Drupal, est d'utiliser la technologie headless. La tendance récente, dans le développement web en général, et par conséquent dans le développement Drupal, est d'utiliser la technologie headless.

    Écrit par Mihail Shahov
    Aug 07, 20238 min read
    Embaucher des développeurs de logiciels spécialisés (équipes)

    Blog

    Embaucher des développeurs de logiciels spécialisés (équipes)

    Vous en avez assez d'augmenter les dépenses de votre équipe de développement interne ? Pourquoi ne pas faire appel à une équipe dédiée pour 40 à 60 % du coût ?

    Écrit par Mihail Shahov
    Aug 07, 20233 min read
    L'importance du bon partenaire de développement dans le cycle de vie de votre logiciel

    Blog

    L'importance du bon partenaire de développement dans le cycle de vie de votre logiciel

    La réussite à portée de main : L'art de choisir le partenaire idéal pour le développement de logiciels. Découvrez le rôle essentiel des partenaires dans le développement de logiciels, les secrets du retour sur investissement et restez à la pointe des tendances du secteur dans cet article incontournable.

    Écrit par Mihail Shahov
    Sep 26, 202310 min read
    Tutoriel sur le module Config split pour Drupal

    Blog

    Tutoriel sur le module Config split pour Drupal

    En tant que développeurs, nous sommes souvent amenés à travailler dans des environnements différents. Cela peut parfois conduire à des problèmes (inattendus). Dans Drupal 8, nous utilisons le système de configuration qui fonctionne plutôt bien, mais il y a des cas où les paramètres pour l'environnement local et tout autre environnement devraient être différents.

    Écrit par Ivaylo Tsandev
    Aug 08, 20238 min read
    Dévoiler le duo de puissance : Next.js comme frontend Headless de Drupal 10

    Blog

    Dévoiler le duo de puissance : Next.js comme frontend Headless de Drupal 10

    Découvrez la synergie dynamique entre Drupal 10 et Next.js, alors que cette puissante combinaison redessine le paysage du développement web. Next.js, un framework open-source basé sur React, est intégré de manière transparente en tant que frontend headless de Drupal 10, offrant une pléthore d'avantages. De l'amélioration des performances grâce à des fonctionnalités telles que le fractionnement automatique du code et le rendu côté serveur à la conception flexible et aux capacités de référencement, cette collaboration permet aux développeurs de créer des applications web très performantes, évolutives et visuellement attrayantes. La gestion efficace du contenu de Drupal 10 associée à l'adaptabilité de Next.js aux tendances garantit une approche de développement de pointe, positionnant ce tandem à l'avant-garde des pratiques modernes de développement web. Embrassez l'avenir avec la combinaison Drupal 10 et Next.js, redéfinissant la façon dont nous abordons et créons des expériences en ligne dynamiques.

    Écrit par Todor Kolev
    Feb 09, 20246 min read
    Tutoriel du module Config ignore pour Drupal

    Blog

    Tutoriel du module Config ignore pour Drupal

    Parfois, nous ne voulons pas que nos configurations soient partagées dans la base de code. Que faire dans ce cas ?

    Écrit par Ivaylo Tsandev
    Aug 08, 20237 min read

    PRENDRE CONTACT

    Vous avez un projet à lancer ?