Comment désactiver les images -scaled de WordPress (big_image_size_threshold)
Corrigez vos images WordPress qui manquent de netteté en relevant ou supprimant la limite de 2560px avec le filtre big_image_size_threshold, et voyez pourquoi le re-téléversement est l'étape que tout le monde oublie.
Publié
Ajoutez un filtre sur big_image_size_threshold qui retourne false et WordPress cesse de créer des copies -scaled au téléversement. Retournez un nombre à la place et vous relevez la limite au lieu de la supprimer. Les deux vont dans functions.php ou dans une petite mu-extension, et les deux n’agissent que sur les fichiers téléversés après l’activation du filtre.
// Disable the cap entirely — no -scaled copies at all.
add_filter( 'big_image_size_threshold', '__return_false' );
// Or just raise it. Longest edge, in pixels.
add_filter( 'big_image_size_threshold', function () {
return 3840;
} );
Ce que WordPress fait réellement
Depuis WordPress 5.3, chaque fichier téléversé est mesuré sur son plus grand côté. Si ce côté dépasse big_image_size_threshold — 2560px par défaut — WordPress ré-encode l’image jusqu’à cette limite, l’enregistre sous your-photo-scaled.jpg et réécrit les métadonnées du fichier joint pour que la taille full pointe désormais vers la copie réduite.
Votre original n’est pas supprimé. Il reste sur le disque sous son nom d’origine, référencé dans les métadonnées du fichier joint, et accessible en PHP via wp_get_original_image_path(). Mais rien côté public ne le sert. Ni l’éditeur de blocs, ni srcset, ni l’aperçu de la médiathèque. Il dort là comme copie d’archive.
Tout ce qui vient ensuite est donc généré à partir du fichier réduit, pas de ce que vous avez téléversé :
| Taille | Source à partir de laquelle elle est construite |
|---|---|
full | la copie -scaled |
large, medium_large, medium, thumbnail | la copie -scaled |
Tailles personnalisées via add_image_size | la copie -scaled |
Tailles de thèmes et d’extensions, par exemple woocommerce_thumbnail | la copie -scaled |
Candidats srcset | la copie -scaled |
C’est ce seul détail qui prend tant de monde au dépourvu.
Pourquoi c’est la cause habituelle du « mon image nette rend floue »
Deux choses se produisent en même temps, et une seule est évidente.
L’évidente, c’est la résolution. Vous téléversez une photo de 4000px pour une bannière pleine largeur. WordPress livre 2560px au navigateur. Sur un écran standard remplissant un conteneur de 1600px, personne ne remarque rien. Sur un écran retina 2x, ce conteneur réclame environ 3200 pixels réels, en reçoit 2560, et le navigateur étire la différence. Contours mous, détails empâtés, texte flou à l’intérieur de l’image.
La moins évidente, c’est le ré-encodage. La copie -scaled n’est pas un recadrage sans perte de votre fichier. WordPress décode votre image, la redimensionne et la recompresse selon son propre réglage de qualité JPEG. Si votre original était déjà un JPEG compressé sorti de Lightroom ou d’un téléphone, c’est un encodage de seconde génération : des artefacts de compression par-dessus des artefacts de compression. Les détails fins, le grain et les dégradés plats en souffrent le plus. Cela se voit même quand les dimensions en pixels semblent suffisantes.
Vérifiez avant de changer quoi que ce soit. Ouvrez l’image dans un nouvel onglet et lisez le nom de fichier dans l’URL. -scaled.jpg signifie que la limite s’est déclenchée. Un suffixe de dimensions comme -1536x1024.jpg veut dire autre chose : srcset a choisi une taille intermédiaire trop petite, et le filtre de seuil ne vous aidera pas dans ce cas.
Sur le serveur :
find wp-content/uploads -name '*-scaled.*' | wc -l
Si ce nombre est élevé, la limite façonne toute votre médiathèque.
Vous pouvez aussi déposer un fichier dans l’outil de désactivation des images scaled pour voir si une source donnée déclencherait le seuil, et à quelles dimensions atterrirait la copie réduite, avant de fixer un réglage.
Le vrai compromis
La plupart des articles vous disent que désactiver la limite coûte de l’espace disque. C’est l’inverse, et ça vaut la peine d’être précis.
L’espace disque par image baisse légèrement. Avec le seuil actif, WordPress stocke votre original et une grande copie réduite. Sans le seuil, vous ne gardez que l’original. Un fichier au lieu de deux.
La bande passante et le poids des pages augmentent, parfois beaucoup. Sans la limite, full correspond à votre fichier intact. Tout ce qui renvoie ou affiche la taille full — une lightbox, une extension de galerie, un lien « voir l’original », un thème qui demande full pour ses bannières — envoie désormais un fichier qui peut peser 6 Mo au lieu de 900 Ko. Sur mobile, c’est un vrai problème de Largest Contentful Paint, et les CDN d’images ne vous sauveront pas toujours, car certains laissent passer les fichiers au-delà d’une taille limite.
La mémoire consommée au téléversement augmente. Redimensionner une image de 6000px en PHP demande nettement plus de mémoire qu’une de 2560px. Sur un hébergement mutualisé bon marché avec une limite mémoire PHP basse, désactiver la limite est un bon moyen de commencer à avoir des téléversements en échec ou des miniatures générées à moitié. Relever le seuil à 3840 plutôt que le supprimer est la version prudente du même changement.
C’est pourquoi le réglage raisonnable par défaut, pour la plupart des sites, consiste à relever le nombre, pas à le supprimer. Le supprimer est justifié quand vous servez des images qui ont réellement besoin de leur pleine résolution : galeries de qualité impression, zoom produit, photographie d’architecture, tout ce où l’on attend de l’internaute qu’il inspecte l’original.
Appliquer le changement correctement
1. Placez le filtre là où il survivra. functions.php dans un thème enfant fonctionne. Une mu-extension d’un seul fichier est mieux, parce qu’un changement de thème ne peut pas l’annuler en silence.
<?php
/**
* Plugin Name: Raise big image threshold
*/
add_filter( 'big_image_size_threshold', function () {
return 3840;
} );
2. Re-téléversez les images concernées. C’est l’étape que les gens sautent avant de conclure que le filtre n’a pas marché. Le seuil est évalué une seule fois, au téléversement. Les fichiers joints existants gardent leurs anciennes métadonnées pour toujours. Supprimez le fichier joint, téléversez-le à nouveau, puis corrigez les références dans vos contenus.
3. N’attendez rien de la régénération des miniatures. wp media regenerate via WP-CLI reconstruit les tailles intermédiaires à partir de ce que les métadonnées appellent le fichier full — c’est-à-dire, pour une image déjà bridée, la copie -scaled. Il ne peut pas restaurer un détail qui a été jeté. Utile comme nettoyage après un re-téléversement. Inutile comme correctif à lui seul.
4. Vérifiez le résultat, ne le supposez pas. Après le re-téléversement, ouvrez l’image côté public et relisez le nom de fichier. Pas de -scaled : le filtre est actif.
Quand désactiver est une mauvaise idée
Si vos images sources font déjà moins de 2560px et qu’elles manquent quand même de netteté, le seuil n’a jamais été en cause. Le problème, c’est que la zone d’affichage est plus grande que les pixels disponibles, et la réponse est un fichier source plus grand ou un conteneur plus petit — pas ce filtre.
Si le nom de fichier servi porte un suffixe de dimensions plutôt que -scaled, c’est srcset qui a choisi un petit candidat. C’est généralement un décalage entre la largeur de contenu déclarée par votre thème et la zone dans laquelle l’image s’affiche réellement. Couper la limite n’y change rien.
Et si une extension réécrit votre src vers un optimiseur ou un proxy CDN, rien de tout cela ne s’applique tant que vous n’avez pas vérifié ce que ce proxy sert. Comparez ce que WordPress devrait générer avec ce que le navigateur charge réellement ; quand les deux divergent, regardez ce qui se trouve entre les deux.
FAQ
Questions
Comment désactiver les images scaled dans WordPress ?
Ajoutez un filtre sur big_image_size_threshold qui retourne false. Placez-le dans functions.php ou dans une petite mu-extension. Retourner false désactive complètement la limite : les fichiers téléversés gardent leurs dimensions d'origine et aucune copie -scaled n'est créée. Retourner un nombre à la place, comme 3840, relève la limite au lieu de la supprimer.
Que signifie le suffixe -scaled dans un nom de fichier WordPress ?
Il marque une copie ré-encodée que WordPress a créée parce que votre fichier dépassait 2560px sur son plus grand côté. Cette copie devient la taille full partout sur votre site. Votre fichier d'origine reste sur le disque sous son nom normal, mais rien côté public n'y renvoie, et chaque miniature et chaque candidat srcset sont construits à partir de la copie réduite.
Désactiver les images scaled consomme-t-il plus d'espace disque ?
Par image, cela en consomme généralement un peu moins, puisque WordPress cesse d'écrire un second gros fichier à côté de votre original. Le vrai coût, c'est la bande passante, pas le stockage. Sans la limite, tout ce qui renvoie vers la taille full sert votre fichier intact, qui peut peser plusieurs mégaoctets sur une connexion mobile.
Désactiver le seuil va-t-il corriger les images déjà floues ?
Non. Le filtre n'agit que sur les nouveaux téléversements. Les images déjà présentes dans la médiathèque conservent des métadonnées qui pointent vers leur copie réduite, et régénérer les miniatures reconstruit les tailles à partir de ce même fichier bridé. Pour retrouver la résolution, vous devez supprimer le fichier joint et le téléverser à nouveau une fois le filtre actif.
2560px est-il le bon seuil à conserver ?
Pour la plupart des sites de contenu, oui. Une source de 2560px couvre une zone d'affichage de 1280px à une densité de pixels de 2x, ce qui est le cas courant. Montez à 3840 si vous utilisez des bannières pleine largeur, du zoom produit ou des galeries photo. Désactivez la limite entièrement seulement si vous avez réellement besoin de servir les originaux intacts.