Il y a 3 mois, j’ai développé un module sur mesure pour un client. L’objectif était simple : obtenir des images plus nettes et plus légères sur sa boutique PrestaShop. Le module tourne en production sans problème depuis, alors j’ai décidé de l’adapter pour le core de PrestaShop.
Résultat : PR acceptée en 24h et intégrée au milestone de PrestaShop 9.2.
Le problème initial
PrestaShop utilise par défaut la librairie GD pour le traitement des images. Bien que fonctionnelle, GD présente plusieurs limitations :
- Qualité de redimensionnement moyenne : l’algorithme par défaut produit des images parfois floues
- Pas de support AVIF natif : le format le plus performant du web moderne n’était pas disponible
- Consommation mémoire élevée : problématique pour les boutiques avec beaucoup de produits
De plus, une demande de la communauté pour le support d’ImageMagick existait depuis 2020, sans réponse officielle.
La solution technique
Ma Pull Request apporte 4 améliorations majeures en seulement 576 lignes de code sur 4 fichiers, sans breaking change :
1. Support natif d’ImageMagick
ImageMagick est la référence en matière de traitement d’images. Ma contribution l’intègre nativement à PrestaShop avec :
// Détection automatique de la disponibilité
if (extension_loaded('imagick')) {
// Utilisation d'ImageMagick
} else {
// Fallback sur GD
}
Aucune configuration nécessaire : si ImageMagick est disponible sur le serveur, il est utilisé automatiquement.
2. Support AVIF réparé
Le format AVIF offre une compression supérieure au WebP tout en maintenant une excellente qualité. Le support existait partiellement mais était cassé. Ma contribution :
- Corrige la détection du support AVIF
- Ajoute la génération AVIF via ImageMagick
- Maintient la compatibilité avec les navigateurs plus anciens
3. Filtre Lanczos pour le redimensionnement
Le filtre Lanczos est reconnu comme l’un des meilleurs algorithmes de redimensionnement d’images :
$imagick->resizeImage(
$width,
$height,
\Imagick::FILTER_LANCZOS,
1
);
Comparé à l’algorithme GD par défaut, les images redimensionnées avec Lanczos sont :
- Plus nettes
- Sans artefacts de compression
- Visuellement plus proches de l’original
4. Fallback automatique intelligent
Le système détecte automatiquement les capacités du serveur :
- ImageMagick disponible → utilisé avec Lanczos
- Seulement GD disponible → fallback transparent
- Ni l’un ni l’autre → erreur claire pour l’administrateur
public static function getImageProcessor(): ImageProcessorInterface
{
if (self::isImagickAvailable()) {
return new ImagickProcessor();
}
return new GdProcessor();
}
Impact concret pour les boutiques
Avant (GD uniquement)
- Images parfois floues après redimensionnement
- Fichiers WebP ou JPEG uniquement
- Qualité visuelle variable selon les produits
Après (ImageMagick + AVIF)
- Images plus nettes grâce au filtre Lanczos
- Fichiers 30-50% plus légers avec AVIF
- Chargement plus rapide = meilleur SEO
- Expérience client améliorée
Pourquoi contribuer à l’open source ?
Cette contribution illustre parfaitement le cercle vertueux de l’open source :
- Un besoin client réel : développement d’un module sur mesure
- Validation en production : 3 mois de fonctionnement sans problème
- Partage avec la communauté : adaptation pour le core
- Amélioration collective : toutes les boutiques en bénéficient
Le tout sans module payant et sans réglages complexes.
Détails de la Pull Request
- Repository : PrestaShop/PrestaShop
- PR #40625 : Add ImageMagick support with AVIF and Lanczos filter
- Milestone : PrestaShop 9.2
- Lignes modifiées : 576
- Fichiers modifiés : 4
- Breaking changes : 0
Comment en profiter ?
Dès maintenant (module)
Si vous ne pouvez pas attendre PrestaShop 9.2, contactez-moi pour le module standalone compatible PrestaShop 8.x et 9.x.
À partir de PrestaShop 9.2
La fonctionnalité sera native. Assurez-vous simplement que votre hébergeur propose ImageMagick (c’est le cas de la plupart des hébergeurs modernes).
Pour vérifier si ImageMagick est disponible sur votre serveur :
<?php
echo extension_loaded('imagick') ? 'ImageMagick disponible' : 'GD uniquement';
Conclusion
Contribuer à l’open source, c’est transformer un développement client en amélioration pour toute la communauté. Cette PR PrestaShop prouve qu’une solution simple (576 lignes) peut avoir un impact majeur sur des milliers de boutiques.
Vous souhaitez optimiser les performances de votre boutique PrestaShop ? Contactez-moi pour un audit gratuit.