Make WordPress Core


Ignore:
Timestamp:
11/29/2024 11:46:50 PM (5 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.