WordPress.org

Make WordPress Core

Ticket #24380: 24380.4.2.patch

File 24380.4.2.patch, 1.9 KB (added by mikemanger, 5 years ago)
  • wp-includes/class-wp-image-editor-gd.php

     
    384384                                imagetruecolortopalette( $image, false, imagecolorstotal( $image ) );
    385385
    386386                        /*
    387                          * Invert the 1-100 quality scale and constrain it to 0-9,
    388                          * as per imagepng()'s peculiar quality parameter.
     387                         * Convert quality (1-100) to a valid compression value (0-9)
     388                         *  0 = no compression
     389                         *  1 = worst compression
     390                         *  9 = best compression
     391                         * -1 = use default zlib compression
    389392                         */
    390                         $compression_level = floor( ( 101 - $this->quality ) * 0.09 );
     393                        $compression_level = floor( $this->quality / 10 );
    391394
     395                        if ( $compression_level > 9 ) {
     396                                $compression_level = 9;
     397                        } elseif ( -1 != $compression_level && $compression_level < 0 ) {
     398                                $compression_level = 0;
     399                        }
    392400                        if ( ! $this->make_image( $filename, 'imagepng', array( $image, $filename, $compression_level ) ) ) {
    393401                                return new WP_Error( 'image_save_error', __('Image Editor Save Failed') );
    394402                        }
  • wp-includes/class-wp-image-editor.php

     
    244244                        if ( $quality == 0 ) {
    245245                                $quality = 1;
    246246                        }
    247                 }
     247                } elseif ( 'image/png' == $this->mime_type ) {
     248                        /**
     249                         * Filter the PNG compression level.
     250                         *
     251                         * @since 4.0.0
     252                         *
     253                         * @param int    $quality Compression level, between 1 (worst compression)
     254                         *                        and 100 (best but slowest compression).
     255                         */
     256                        $quality = apply_filters( 'png_compression_level', $quality );
     257                }
    248258
    249259                if ( ( $quality >= 1 ) && ( $quality <= 100 ) ){
    250260                        $this->quality = $quality;