Make WordPress Core

Ticket #21668: 21668.6.diff

File 21668.6.diff, 2.9 KB (added by adamsilverstein, 10 months ago)
  • src/wp-includes/class-wp-image-editor-gd.php

    diff --git a/src/wp-includes/class-wp-image-editor-gd.php b/src/wp-includes/class-wp-image-editor-gd.php
    index 23331c7f19..938ae61d48 100644
    a b class WP_Image_Editor_GD extends WP_Image_Editor { 
    504504                        $filename = $this->generate_filename( null, null, $extension );
    505505                }
    506506
     507                if ( function_exists( 'imageinterlace' ) ) {
     508                        /** This filter is documented in wp-includes/class-wp-image-editor-imagick.php */
     509                        imageinterlace( $image, apply_filters( 'image_save_progressive', false, $mime_type ) );
     510                }
     511
    507512                if ( 'image/gif' === $mime_type ) {
    508513                        if ( ! $this->make_image( $filename, 'imagegif', array( $image, $filename ) ) ) {
    509514                                return new WP_Error( 'image_save_error', __( 'Image Editor Save Failed' ) );
  • src/wp-includes/class-wp-image-editor-imagick.php

    diff --git a/src/wp-includes/class-wp-image-editor-imagick.php b/src/wp-includes/class-wp-image-editor-imagick.php
    index 546ad3e799..64babdad5a 100644
    a b class WP_Image_Editor_Imagick extends WP_Image_Editor { 
    489489                                        $this->image->setImageDepth( 8 );
    490490                                }
    491491                        }
    492 
    493                         if ( is_callable( array( $this->image, 'setInterlaceScheme' ) ) && defined( 'Imagick::INTERLACE_NO' ) ) {
    494                                 $this->image->setInterlaceScheme( Imagick::INTERLACE_NO );
    495                         }
    496492                } catch ( Exception $e ) {
    497493                        return new WP_Error( 'image_resize_error', $e->getMessage() );
    498494                }
    class WP_Image_Editor_Imagick extends WP_Image_Editor { 
    825821                        return new WP_Error( 'image_save_error', $e->getMessage(), $filename );
    826822                }
    827823
     824                if ( method_exists( $this->image, 'setInterlaceScheme' ) && method_exists( $this->image, 'getInterlaceScheme' ) && defined( 'Imagick::INTERLACE_PLANE' ) ) {
     825                        $orig_interlace = $this->image->getInterlaceScheme();
     826                        /**
     827                         * Filters whether to output progressive images (if available).
     828                         *
     829                         * @since 6.5.0
     830                         *
     831                         * @param bool   $interlace Whether to use progressive images for output if available. Default false.
     832                         * @param string $mime_type The mime type being saved.
     833                         */
     834                        if ( apply_filters( 'image_save_progressive', false, $mime_type ) ) {
     835                                $this->image->setInterlaceScheme( Imagick::INTERLACE_PLANE ); // True - line interlace output.
     836                        } else {
     837                                $this->image->setInterlaceScheme( Imagick::INTERLACE_NO ); // False - no interlace output.
     838                        }
     839                }
     840
    828841                $write_image_result = $this->write_image( $this->image, $filename );
    829842                if ( is_wp_error( $write_image_result ) ) {
    830843                        return $write_image_result;
    class WP_Image_Editor_Imagick extends WP_Image_Editor { 
    833846                try {
    834847                        // Reset original format.
    835848                        $this->image->setImageFormat( $orig_format );
     849                        if ( isset( $orig_interlace ) ) {
     850                                $this->image->setInterlaceScheme( $orig_interlace );
     851                        }
    836852                } catch ( Exception $e ) {
    837853                        return new WP_Error( 'image_save_error', $e->getMessage(), $filename );
    838854                }