WordPress.org

Make WordPress Core

Ticket #40370: 40370.diff

File 40370.diff, 4.7 KB (added by themattroyal, 12 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 32f33dfa6e..13fe637053 100644
    a b class WP_Image_Editor_GD extends WP_Image_Editor { 
    136136                return parent::update_size( $width, $height );
    137137        }
    138138
     139        /**
     140         * Sets or updates current image size.
     141         *
     142         * @since 5.1.0
     143         *
     144         * @param bool|array $crop
     145         * @param int $dst_w
     146         * @param int $dst_h
     147         * @return true
     148         */
     149        protected function update_crop_hash( $crop, $dst_w, $dst_h ) {
     150                if ( ! is_array($crop) ) {
     151                        return false;
     152                }
     153
     154                $str = $crop[0] . $crop[1] . $dst_w . $dst_h;
     155                $hash = substr( md5( $str ), 0, 8 );
     156               
     157                return parent::update_crop_hash( $hash );
     158        }
     159
    139160        /**
    140161         * Resizes current image.
    141162         * Wraps _resize, since _resize returns a GD Resource.
    class WP_Image_Editor_GD extends WP_Image_Editor { 
    187208                imagecopyresampled( $resized, $this->image, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h );
    188209
    189210                if ( is_resource( $resized ) ) {
     211                        $this->update_crop_hash( $crop, $dst_w, $dst_h );
    190212                        $this->update_size( $dst_w, $dst_h );
    191213                        return $resized;
    192214                }
    class WP_Image_Editor_GD extends WP_Image_Editor { 
    217239         * @return array An array of resized images' metadata by size.
    218240         */
    219241        public function multi_resize( $sizes ) {
     242
    220243                $metadata  = array();
    221244                $orig_size = $this->size;
    222245
    class WP_Image_Editor_GD extends WP_Image_Editor { 
    429452                        'file'      => wp_basename( apply_filters( 'image_make_intermediate_size', $filename ) ),
    430453                        'width'     => $this->size['width'],
    431454                        'height'    => $this->size['height'],
     455                        'hash'          => $this->hash,
    432456                        'mime-type' => $mime_type,
    433457                );
    434458        }
  • 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 abb215038b..e1f304ffb9 100644
    a b class WP_Image_Editor_Imagick extends WP_Image_Editor { 
    237237                return parent::update_size( $width, $height );
    238238        }
    239239
     240        /**
     241         * Sets or updates current image size.
     242         *
     243         * @since 5.1.0
     244         *
     245         * @param bool|array $crop
     246         * @param int $dst_w
     247         * @param int $dst_h
     248         * @return true
     249         */
     250        protected function update_crop_hash( $crop, $dst_w, $dst_h ) {
     251                if ( ! is_array($crop) ) {
     252                        return false;
     253                }
     254
     255                $str = $crop[0] . $crop[1] . $dst_w . $dst_h;
     256                $hash = substr( md5( $str ), 0, 8 );
     257               
     258                return parent::update_crop_hash( $hash );
     259        }
     260
    240261        /**
    241262         * Resizes current image.
    242263         *
    class WP_Image_Editor_Imagick extends WP_Image_Editor { 
    263284                list( $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h ) = $dims;
    264285
    265286                if ( $crop ) {
     287                        $this->update_crop_hash( $crop, $dst_w, $dst_h );
    266288                        return $this->crop( $src_x, $src_y, $src_w, $src_h, $dst_w, $dst_h );
    267289                }
    268290
    class WP_Image_Editor_Imagick extends WP_Image_Editor { 
    646668                        'file'      => wp_basename( apply_filters( 'image_make_intermediate_size', $filename ) ),
    647669                        'width'     => $this->size['width'],
    648670                        'height'    => $this->size['height'],
     671                        'hash'          => $this->hash,
    649672                        'mime-type' => $mime_type,
    650673                );
    651674        }
  • src/wp-includes/class-wp-image-editor.php

    diff --git a/src/wp-includes/class-wp-image-editor.php b/src/wp-includes/class-wp-image-editor.php
    index 26dd78d230..c7b4d2c907 100644
    a b  
    1414abstract class WP_Image_Editor {
    1515        protected $file              = null;
    1616        protected $size              = null;
     17        protected $hash                  = null;
    1718        protected $mime_type         = null;
    1819        protected $default_mime_type = 'image/jpeg';
    1920        protected $quality           = false;
    abstract class WP_Image_Editor { 
    195196                return true;
    196197        }
    197198
     199
     200        /**
     201         * Gets current image hash (when crop position has been set).
     202         *
     203         * @since 5.1.0
     204         *
     205         * @return string $hash 8 character hash
     206         */
     207        public function get_crop_hash() {
     208                return $this->hash;
     209        }
     210
     211        /**
     212         * Sets current image hash (when crop position has been set).
     213         *
     214         * @since 5.1.0
     215         *
     216         * @param string $hash
     217         * @return true
     218         */
     219        protected function update_crop_hash( $hash = null ) {
     220                $this->hash = $hash;
     221                return true;
     222        }
     223
    198224        /**
    199225         * Gets the Image Compression quality on a 1-100% scale.
    200226         *
    abstract class WP_Image_Editor { 
    378404                        return false;
    379405                }
    380406
    381                 return "{$this->size['width']}x{$this->size['height']}";
     407                $suffix = "{$this->size['width']}x{$this->size['height']}";
     408
     409                if( $this->get_crop_hash() ){
     410                        $suffix = $suffix . "-{$this->hash}";
     411                }
     412               
     413                return $suffix;
    382414        }
    383415
    384416        /**