web-dev-qa-db-fra.com

Lors du téléchargement de fichiers JPEG, WordPress a-t-il l'image d'origine?

J'essaie de déterminer à quoi devrait ressembler mon flux de traitement d'images. Je sais que WordPress redimensionne et compresse automatiquement les images en différentes tailles lors du téléchargement. Je suis curieux de savoir s'il y a compression sur l'image d'origine.

Comme il s'agit de compresser (comme il se doit) sur les images plus petites, je ne voudrais pas télécharger un fichier JPEG déjà compressé pour le recompresser sur des tailles plus petites. Mais, s'il ne compresse pas l'original, j'aurai un fichier image beaucoup plus volumineux que nécessaire lorsque quelqu'un ira voir l'original.

Je pense que le flux de travail idéal serait de télécharger un fichier JPEG de qualité 100 sur WordPress, de le redimensionner et de compresser toutes les images plus petites à l’aide de l’image de qualité complète, puis de compresser l’original. Est-ce que quelqu'un sait si c'est possible (ou si c'est ce qui est déjà fait)?

2
Dominic P

C’est tout ce que je peux obtenir en lisant le code source de la fonction wp_handle_upload dans wp-admin/includes/file.php.

  • WordPress conserve le fichier d'origine chargé (généralement) - voir ci-dessous ...
  • WordPress applique la compression JPEG àimages redimensionnéeslorsque la source est un fichier JPEG.
  • Le niveau de compression JPEG par défaut est 90.
  • Vous pouvez ajuster le niveau de compression JPEG en ajoutant un filtre jpeg_quality:

    add_filter('jpeg_quality', 'ex46632_jpeg_quality');
    function ex46632_jpeg_quality($quality) {
        $quality = 95; // An example of setting the quality to a higher value.
        return $quality;
    }
    
  • Vous pouvez forcer une image téléchargée à être redimensionnée au Max Width/Max Height spécifié dans Settings > Media > Large size en ajoutant un filtre wp_upload_resize:

    add_filter('wp_upload_resize', 'ex46632_upload_resize');
    function ex46632_upload_resize($resize) {
        $resize = true; // Force resizing to the max sizes.
        return $resize;
    }
    
    • S'il y a des erreurs dans la création de l'image redimensionnée, le fichier téléchargé d'origine sera conservé à la place.
    • Si le redimensionnement est réussi, le média téléchargé d'origine est supprimé.

Notez que les exemples de code ici n'ont pas été testés et sont juste pour référence.

UpdateComme indiqué, une modification a été apportée au traitement du redimensionnement dans la fonction wp_handle_upload. Cette modification corrige un bogue, le code de redimensionnement ayant été supprimé, les images ne sont pas redimensionnées lors du téléchargement et conservent leur taille d'origine. Pour votre référence changement de code explicite et ticket de bogue . Il convient de noter que ce changement est toujours "En attente de révision vers 3.4", il n'est pas encore publié.

Notez également que le ticket a le commentaire "Laisser Plupload redimensionner les images (avant le téléchargement)", il existe donc peut-être un autre endroit pour vérifier le redimensionnement des images puisque Plupload est inclus.

5
Dean Taylor