WebBlocks CMS génère un ensemble fixe de variantes d’image propres au produit à partir de médias publics JPEG, PNG et WebP. Les éditeurs continuent à gérer uniquement l’élément multimédia d’origine ; les fichiers générés sont des artefacts dérivés du cache et n’apparaissent pas comme des enregistrements distincts dans la bibliothèque.

Variantes système

La configuration media_transforms.php propre au paquet définit les variantes de miniature, de carte, de contenu adaptatif, de hero et de réseaux sociaux. Ces définitions relèvent du comportement du produit CMS. Cette version n’ajoute délibérément ni variantes définies par le projet ni écran d’administration permettant de modifier les dimensions et la qualité.

Les transformations sont générées lors de la première utilisation et stockées sur le disque du média source sous media/transforms/{media_id}. L’empreinte du cache comprend uniquement l’identité de la source pertinente pour la transformation, les dimensions, les données MIME, le point focal et la définition de la variante ; les modifications des métadonnées éditoriales ne l’invalident pas. Le remplacement ou la suppression d’un média ainsi que la modification de son point focal effacent les transformations obsolètes. L’écran de modification des Médias affiche les variantes existantes sans générer les fichiers manquants et permet d’effacer puis de régénérer explicitement toutes les variantes système.

Les formats SVG et raster non pris en charge utilisent en toute sécurité leur URL publique d’origine. Les fichiers originaux ne sont jamais écrasés. Les fichiers de transformation dérivés ne constituent pas un contenu éditorial indépendant et peuvent être régénérés après un transfert ou une restauration.

Flux de travail éditorial

Les médias de type image proposent un sélecteur de point focal sur l’écran de modification des Médias. La position X/Y normalisée sélectionnée guide les variantes de recadrage telles que la miniature, la carte, le hero et les réseaux sociaux. Les variantes d’ajustement conservent les proportions d’origine.

Le même écran affiche un aperçu de chaque variante système. Les sélecteurs de médias utilisent la variante miniature, tandis que le bloc Image public émet des candidats srcset adaptatifs chargés en différé à partir des variantes d’ajustement.

Les variantes d’ajustement conservent les proportions et utilisent directement l’original lorsqu’il n’est déjà pas plus large que la variante demandée. Les variantes de recadrage calculent une zone de recadrage source selon les proportions configurées autour du point focal. Les petits originaux ne sont jamais agrandis : le format de sortie configuré est réduit uniformément pour s’adapter à la source, puis recadré sans déformation.

Le balisage des Images adaptatives et des Galeries utilise les dimensions mesurées du résultat, trie les candidats selon leur largeur réelle, supprime les URL en double et omet srcset sauf s’il reste au moins deux candidats distincts. La valeur sizes de la Galerie suit le nombre de colonnes configuré. Les images de réseaux sociaux d’une page ou d’un site utilisent le recadrage social pour les métadonnées Open Graph et Twitter. card et hero restent réservés, car le paquet actuel ne possède aucun champ de Bibliothèque multimédia de premier ordre pour ces rôles de blocs.

Exigences de stockage et d’exécution

Les transformations utilisent PHP GD et les disques du système de fichiers Laravel. La génération de JPEG, PNG et WebP dépend du codec GD correspondant. Si le format source ou le codec d’exécution n’est pas disponible, le rendu public se replie sur l’URL du média d’origine au lieu d’échouer.

Le canal alpha PNG est conservé. Les échecs de décodage, de redimensionnement, d’encodage et de stockage suppriment la sortie incomplète et déclenchent un repli sûr. ext-gd reste facultatif dans la section suggest de Composer.

Les opérateurs peuvent régénérer toutes les images admissibles par lots limités, cibler un seul id ou supprimer en toute sécurité les répertoires d’empreintes obsolètes sans toucher aux originaux ni aux transformations actuelles :

php artisan webblocks:media-variants:regenerate
php artisan webblocks:media-variants:regenerate --media=123
php artisan webblocks:media-variants:regenerate --prune

La génération est synchrone et ne nécessite délibérément aucune file d’attente. Les grandes bibliothèques doivent être régénérées pendant une fenêtre de maintenance.