⚡ PerformanceIntermédiaire PS 1.7 PS 8.x

PrestaShop augmente le poids de vos images : causes et solutions

Vos images sont plus lourdes après import dans PrestaShop ? Découvrez pourquoi et comment optimiser la compression avec GD, WebP et le lazy loading.

En bref : PrestaShop augmente le poids des images car la librairie GD réencode chaque fichier avec une compression basique. Pour corriger : vérifiez GD, réduisez la qualité JPEG à 80, pré-compressez vos images avec TinyPNG et activez le WebP sur PrestaShop 8.x.

Publié le 21 mars 2026 5 min de lecture Alexandre Carette

Pourquoi PrestaShop alourdit vos images après import

Un problème récurrent chez les marchands PrestaShop : vous uploadez une image de 150 Ko et vous la retrouvez à 300 Ko (voire plus) une fois traitée par le back-office. Ce comportement contre-intuitif a des causes techniques précises, et surtout des solutions concrètes.

Comprendre le mécanisme de régénération d'images

Quand vous importez une image produit, PrestaShop ne se contente pas de la stocker telle quelle. Le CMS :

  1. **Décode l'image source** via la librairie graphique PHP (GD ou ImageMagick)
  2. **Génère toutes les déclinaisons** définies dans **Conception > Images** (miniature, panier, fiche produit, etc.)
  3. **Réencode chaque déclinaison** au format JPEG avec un niveau de qualité configuré
  4. C'est à l'étape 3 que le problème survient. Si votre image source était déjà optimisée avec un algorithme de compression avancé (comme celui de TinyPNG ou Squoosh), le réencodage par GD produit souvent un fichier plus lourd car la librairie GD utilise une compression JPEG basique, moins efficace que les outils spécialisés.

    Les causes principales

    1. La librairie GD mal configurée ou absente

    GD est la librairie de traitement d'images par défaut de PHP. Si elle est absente ou mal configurée, PrestaShop peut tomber sur un fallback qui produit des images non compressées.

    Pour vérifier sa présence, créez un fichier temporaire info.php à la racine de votre site :

    
    <?php
    phpinfo(INFO_MODULES);
    

    Accédez-y via https://votre-site.com/info.php et recherchez la section gd. Vous devez voir :

    • **GD Support** : enabled
    • **JPEG Support** : enabled
    • **PNG Support** : enabled
    • **WebP Support** : enabled (PHP 7.1+)

    Sécurité : supprimez immédiatement ce fichier après vérification. Un phpinfo() exposé publiquement révèle des informations sensibles sur votre serveur.

    2. Dimensions des presets vs dimensions source

    Si votre image source fait 800×800 px mais que vous avez un preset configuré à 1200×1200 px, PrestaShop va upscaler l'image. Le résultat : une image plus grande en pixels, plus lourde en octets, et plus floue visuellement. C'est le pire scénario possible.

    Vérifiez vos presets dans Conception > Images (PS 1.7) ou Design > Images (PS 8.x) :

    TypeUsageDimensions recommandées cart_defaultPanier125 × 125 px small_defaultListing catégorie250 × 250 px medium_defaultFiche produit452 × 452 px home_defaultAccueil600 × 600 px large_defaultZoom800 × 800 px

    Règle d'or : votre image source doit toujours être au moins aussi grande que votre plus grand preset.

    3. Le niveau de qualité JPEG trop élevé

    Par défaut, PrestaShop encode les images en JPEG qualité 90. C'est élevé. Dans la classe ImageManager, le paramètre de qualité impacte directement le poids :

    Qualité JPEGPoids relatifDifférence visuelle 100~300 KoImperceptible vs 90 90~180 KoRéférence 80~120 KoQuasi invisible 75~100 KoLégère sur zoom ×2

    Sur PrestaShop 8.x, vous pouvez ajuster la qualité dans Design > Images > Qualité des images ou via un override de la classe ImageManager :

    
    // override/classes/ImageManager.php
    class ImageManager extends ImageManagerCore
    {
        public static function quality(): int
        {
            // Réduire de 90 à 80 pour un bon compromis poids/qualité
            return 80;
        }
    }
    

    Sur PS 1.7, vérifiez qu'il n'existe pas un override hérité d'un ancien module de filigrane (watermark) qui forcerait une qualité à 100 ou désactiverait la compression.

    4. Le module Filigrane (Watermark)

    L'ancien module watermark (filigrane) de PrestaShop est connu pour interférer avec la compression d'images. Lors du traitement, il décode l'image, applique le filigrane, puis réencode sans optimisation. Si ce module est installé (même désactivé), vérifiez qu'il ne laisse pas de override dans override/classes/ImageManager.php.

    Solutions pour optimiser vos images

    Pré-compression avant upload

    La meilleure approche est d'optimiser vos images avant de les importer dans PrestaShop. Outils recommandés :

    • **TinyPNG / TinyJPG** : compression lossy intelligente, réduction de 50-80% sans perte visible. API disponible pour le traitement par lots.
    • **Squoosh** (par Google) : outil en ligne gratuit avec prévisualisation avant/après.
    • **ImageOptim** (macOS) : traitement local par lots.

    Passer au format WebP

    Depuis PrestaShop 8.0, le support natif du format WebP est intégré. WebP offre une compression 25 à 35% meilleure que JPEG à qualité visuelle équivalente.

    Activation dans Design > Images > Format de génération des images : cochez WebP en plus de JPEG pour maintenir la compatibilité avec les anciens navigateurs.

    Sur PrestaShop 1.7, le support WebP nécessite un module tiers ou un override personnalisé.

    Implémenter le lazy loading

    Pour les performances perçues, implémentez le chargement différé des images. Depuis PrestaShop 8.x, l'attribut natif loading="lazy" est supporté. Pour une solution plus robuste avec support du responsive :

    
    <!-- Dans vos templates Smarty -->
    <img
      data-src="{$image.url}"
      data-srcset="{$image.small} 250w, {$image.medium} 450w, {$image.large} 800w"
      sizes="(max-width: 768px) 100vw, 50vw"
      class="lazyload"
      alt="{$product.name|escape:'html':'UTF-8'}"
      width="{$image.width}"
      height="{$image.height}"
    />
    

    Combinée avec la librairie lazysizes, cette approche permet de servir des images adaptées à chaque viewport et de ne charger que les images visibles.

    Régénérer les miniatures après optimisation

    Après avoir modifié vos paramètres de qualité ou vos presets, régénérez toutes les miniatures via Design > Images > Régénérer les miniatures. Attention : sur un catalogue volumineux (5 000+ produits), lancez cette opération en CLI pour éviter les timeouts :

    
    php bin/console prestashop:image:regenerate --all
    

    Checklist d'optimisation images PrestaShop

    • [ ] Librairie GD installée et activée (avec support JPEG + WebP)
    • [ ] Aucun override parasite dans `override/classes/ImageManager.php`
    • [ ] Module filigrane désinstallé si non utilisé
    • [ ] Images source ≥ taille du plus grand preset
    • [ ] Qualité JPEG réglée entre 75 et 85
    • [ ] Pré-compression systématique avant upload (TinyPNG, Squoosh)
    • [ ] Format WebP activé (PrestaShop 8.x)
    • [ ] Lazy loading implémenté
    • [ ] Miniatures régénérées après chaque changement de configuration
#optimisation images #compression #GD library #lazy loading #WebP #performance

Questions fréquentes

Tout ce que vous devez savoir sur ce sujet.

Un projet PrestaShop ?

Discutons-en directement.

★★★★★

193 projets livrés

Gratuit & sans engagement — réponse sous 24h

Alexandre Carette

Alexandre Carette

Expert PrestaShop & Architecture E-commerce

Développeur PrestaShop depuis 2014, 193 projets livrés. Je conçois des architectures headless Nuxt + PrestaShop et des outils d'automatisation IA pour les e-commerçants.