Make WordPress Core


Ignore:
Timestamp:
11/29/2024 11:46:50 PM (20 months ago)
Author:
adamsilverstein
Message:

Media: improve filter to enable setting output quality by image size.

Add a new $size parameter to the wp_editor_set_quality filter. $size is an array with 'width' and 'height' keys. Developers can use this information to set image quality based on the image size.

Props adamsilverstein, joemcgill, Mte90, codekraft, birgire, azaozz, sppramodh.
Fixes #54648.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/class-wp-image-editor-gd.php

    r59413 r59473  
    221221
    222222                list( $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h ) = $dims;
     223
     224                $this->set_quality(
     225                        null,
     226                        array(
     227                                'width'  => $dst_w,
     228                                'height' => $dst_h,
     229                        )
     230                );
    223231
    224232                $resized = wp_imagecreatetruecolor( $dst_w, $dst_h );
     
    569577         *
    570578         * @since 6.7.0
    571          *
    572          * @param int $quality Compression Quality. Range: [1,100]
     579         * @since 6.8.0 The `$dims` parameter was added.
     580         *
     581         * @param int   $quality Compression Quality. Range: [1,100]
     582         * @param array $dims    Optional. Image dimensions array with 'width' and 'height' keys.
    573583         * @return true|WP_Error True if set successfully; WP_Error on failure.
    574584         */
    575         public function set_quality( $quality = null ) {
    576                 $quality_result = parent::set_quality( $quality );
     585        public function set_quality( $quality = null, $dims = array() ) {
     586                $quality_result = parent::set_quality( $quality, $dims );
    577587                if ( is_wp_error( $quality_result ) ) {
    578588                        return $quality_result;
     
    587597                                if ( ! empty( $webp_info['type'] ) && 'lossless' === $webp_info['type'] ) {
    588598                                        $quality = IMG_WEBP_LOSSLESS;
    589                                         parent::set_quality( $quality );
     599                                        parent::set_quality( $quality, $dims );
    590600                                }
    591601                        }
Note: See TracChangeset for help on using the changeset viewer.