]> scripts.mit.edu Git - autoinstalls/wordpress.git/blobdiff - wp-includes/class-wp-image-editor.php
WordPress 4.6.3-scripts
[autoinstalls/wordpress.git] / wp-includes / class-wp-image-editor.php
index 5affba48c7f78ae677d7ce4af9cdc5480b7f0ee9..c046823e9fc73652da7bd298f9b05f019723d622 100644 (file)
@@ -16,10 +16,13 @@ abstract class WP_Image_Editor {
        protected $size = null;
        protected $mime_type = null;
        protected $default_mime_type = 'image/jpeg';
-       protected $quality = 90;
+       protected $quality = false;
+       protected $default_quality = 82;
 
        /**
         * Each instance handles a single file.
+        *
+        * @param string $file Path to the file to load.
         */
        public function __construct( $file ) {
                $this->file = $file;
@@ -30,11 +33,13 @@ abstract class WP_Image_Editor {
         * Must be overridden in a sub-class.
         *
         * @since 3.5.0
+        *
+        * @static
         * @access public
         * @abstract
         *
         * @param array $args
-        * @return boolean
+        * @return bool
         */
        public static function test( $args = array() ) {
                return false;
@@ -45,11 +50,13 @@ abstract class WP_Image_Editor {
         * Must be overridden in a sub-class.
         *
         * @since 3.5.0
+        *
+        * @static
         * @access public
         * @abstract
         *
         * @param string $mime_type
-        * @return boolean
+        * @return bool
         */
        public static function supports_mime_type( $mime_type ) {
                return false;
@@ -62,7 +69,7 @@ abstract class WP_Image_Editor {
         * @access protected
         * @abstract
         *
-        * @return boolean|WP_Error True if loaded; WP_Error on failure.
+        * @return bool|WP_Error True if loaded; WP_Error on failure.
         */
        abstract public function load();
 
@@ -92,8 +99,8 @@ abstract class WP_Image_Editor {
         *
         * @param  int|null $max_w Image width.
         * @param  int|null $max_h Image height.
-        * @param  boolean  $crop
-        * @return boolean|WP_Error
+        * @param  bool     $crop
+        * @return bool|WP_Error
         */
        abstract public function resize( $max_w, $max_h, $crop = false );
 
@@ -124,15 +131,14 @@ abstract class WP_Image_Editor {
         * @access public
         * @abstract
         *
-        * @param string|int $src The source file or Attachment ID.
         * @param int $src_x The start x position to crop from.
         * @param int $src_y The start y position to crop from.
         * @param int $src_w The width to crop.
         * @param int $src_h The height to crop.
         * @param int $dst_w Optional. The destination width.
         * @param int $dst_h Optional. The destination height.
-        * @param boolean $src_abs Optional. If the source crop points are absolute.
-        * @return boolean|WP_Error
+        * @param bool $src_abs Optional. If the source crop points are absolute.
+        * @return bool|WP_Error
         */
        abstract public function crop( $src_x, $src_y, $src_w, $src_h, $dst_w = null, $dst_h = null, $src_abs = false );
 
@@ -144,7 +150,7 @@ abstract class WP_Image_Editor {
         * @abstract
         *
         * @param float $angle
-        * @return boolean|WP_Error
+        * @return bool|WP_Error
         */
        abstract public function rotate( $angle );
 
@@ -155,9 +161,9 @@ abstract class WP_Image_Editor {
         * @access public
         * @abstract
         *
-        * @param boolean $horz Flip along Horizontal Axis
-        * @param boolean $vert Flip along Vertical Axis
-        * @return boolean|WP_Error
+        * @param bool $horz Flip along Horizontal Axis
+        * @param bool $vert Flip along Vertical Axis
+        * @return bool|WP_Error
         */
        abstract public function flip( $horz, $vert );
 
@@ -169,7 +175,7 @@ abstract class WP_Image_Editor {
         * @abstract
         *
         * @param string $mime_type
-        * @return boolean|WP_Error
+        * @return bool|WP_Error
         */
        abstract public function stream( $mime_type = null );
 
@@ -193,6 +199,7 @@ abstract class WP_Image_Editor {
         *
         * @param int $width
         * @param int $height
+        * @return true
         */
        protected function update_size( $width = null, $height = null ) {
                $this->size = array(
@@ -202,6 +209,22 @@ abstract class WP_Image_Editor {
                return true;
        }
 
+       /**
+        * Gets the Image Compression quality on a 1-100% scale.
+        *
+        * @since 4.0.0
+        * @access public
+        *
+        * @return int $quality Compression Quality. Range: [1,100]
+        */
+       public function get_quality() {
+               if ( ! $this->quality ) {
+                       $this->set_quality();
+               }
+
+               return $this->quality;
+       }
+
        /**
         * Sets Image Compression quality on a 1-100% scale.
         *
@@ -209,44 +232,56 @@ abstract class WP_Image_Editor {
         * @access public
         *
         * @param int $quality Compression Quality. Range: [1,100]
-        * @return boolean|WP_Error True if set successfully; WP_Error on failure.
+        * @return true|WP_Error True if set successfully; WP_Error on failure.
         */
        public function set_quality( $quality = null ) {
-               if ( $quality == null ) {
-                       $quality = $this->quality;
-               }
-
-               /**
-                * Filter the default image compression quality setting.
-                *
-                * @since 3.5.0
-                *
-                * @param int    $quality   Quality level between 1 (low) and 100 (high).
-                * @param string $mime_type Image mime type.
-                */
-               $quality = apply_filters( 'wp_editor_set_quality', $quality, $this->mime_type );
-
-               if ( 'image/jpeg' == $this->mime_type ) {
+               if ( null === $quality ) {
                        /**
-                        * Filter the JPEG compression quality for backward-compatibility.
+                        * Filters the default image compression quality setting.
                         *
-                        * The filter is evaluated under two contexts: 'image_resize', and 'edit_image',
-                        * (when a JPEG image is saved to file).
+                        * Applies only during initial editor instantiation, or when set_quality() is run
+                        * manually without the `$quality` argument.
                         *
-                        * @since 2.5.0
+                        * set_quality() has priority over the filter.
+                        *
+                        * @since 3.5.0
                         *
-                        * @param int    $quality Quality level between 0 (low) and 100 (high) of the JPEG.
-                        * @param string $context Context of the filter.
+                        * @param int    $quality   Quality level between 1 (low) and 100 (high).
+                        * @param string $mime_type Image mime type.
                         */
-                       $quality = apply_filters( 'jpeg_quality', $quality, 'image_resize' );
+                       $quality = apply_filters( 'wp_editor_set_quality', $this->default_quality, $this->mime_type );
+
+                       if ( 'image/jpeg' == $this->mime_type ) {
+                               /**
+                                * Filters the JPEG compression quality for backward-compatibility.
+                                *
+                                * Applies only during initial editor instantiation, or when set_quality() is run
+                                * manually without the `$quality` argument.
+                                *
+                                * set_quality() has priority over the filter.
+                                *
+                                * The filter is evaluated under two contexts: 'image_resize', and 'edit_image',
+                                * (when a JPEG image is saved to file).
+                                *
+                                * @since 2.5.0
+                                *
+                                * @param int    $quality Quality level between 0 (low) and 100 (high) of the JPEG.
+                                * @param string $context Context of the filter.
+                                */
+                               $quality = apply_filters( 'jpeg_quality', $quality, 'image_resize' );
+                       }
 
-                       // Allow 0, but squash to 1 due to identical images in GD, and for backwards compatibility.
-                       if ( $quality == 0 ) {
-                               $quality = 1;
+                       if ( $quality < 0 || $quality > 100 ) {
+                               $quality = $this->default_quality;
                        }
                }
 
-               if ( ( $quality >= 1 ) && ( $quality <= 100 ) ){
+               // Allow 0, but squash to 1 due to identical images in GD, and for backward compatibility.
+               if ( 0 === $quality ) {
+                       $quality = 1;
+               }
+
+               if ( ( $quality >= 1 ) && ( $quality <= 100 ) ) {
                        $this->quality = $quality;
                        return true;
                } else {
@@ -270,8 +305,7 @@ abstract class WP_Image_Editor {
         * @return array { filename|null, extension, mime-type }
         */
        protected function get_output_format( $filename = null, $mime_type = null ) {
-               $new_ext = $file_ext = null;
-               $file_mime = null;
+               $new_ext = null;
 
                // By default, assume specified type takes priority
                if ( $mime_type ) {
@@ -299,7 +333,7 @@ abstract class WP_Image_Editor {
                // If not, choose a default instead.
                if ( ! $this->supports_mime_type( $mime_type ) ) {
                        /**
-                        * Filter default mime type prior to getting the file extension.
+                        * Filters default mime type prior to getting the file extension.
                         *
                         * @see wp_get_mime_types()
                         *
@@ -316,7 +350,7 @@ abstract class WP_Image_Editor {
                        $info = pathinfo( $filename );
                        $dir  = $info['dirname'];
 
-                       if( isset( $info['extension'] ) )
+                       if ( isset( $info['extension'] ) )
                                $ext = $info['extension'];
 
                        $filename = trailingslashit( $dir ) . wp_basename( $filename, ".$ext" ) . ".{$new_ext}";
@@ -360,7 +394,7 @@ abstract class WP_Image_Editor {
         * @since 3.5.0
         * @access public
         *
-        * @return string suffix
+        * @return false|string suffix
         */
        public function get_suffix() {
                if ( ! $this->get_size() )
@@ -378,7 +412,7 @@ abstract class WP_Image_Editor {
         * @param string|stream $filename
         * @param callable $function
         * @param array $arguments
-        * @return boolean
+        * @return bool
         */
        protected function make_image( $filename, $function, $arguments ) {
                if ( $stream = wp_is_stream( $filename ) ) {
@@ -414,10 +448,12 @@ abstract class WP_Image_Editor {
         * as mapped from wp_get_mime_types()
         *
         * @since 3.5.0
+        *
+        * @static
         * @access protected
         *
         * @param string $extension
-        * @return string|boolean
+        * @return string|false
         */
        protected static function get_mime_type( $extension = null ) {
                if ( ! $extension )
@@ -426,7 +462,7 @@ abstract class WP_Image_Editor {
                $mime_types = wp_get_mime_types();
                $extensions = array_keys( $mime_types );
 
-               foreach( $extensions as $_extension ) {
+               foreach ( $extensions as $_extension ) {
                        if ( preg_match( "/{$extension}/i", $_extension ) ) {
                                return $mime_types[$_extension];
                        }
@@ -440,10 +476,12 @@ abstract class WP_Image_Editor {
         * as mapped from wp_get_mime_types()
         *
         * @since 3.5.0
+        *
+        * @static
         * @access protected
         *
         * @param string $mime_type
-        * @return string|boolean
+        * @return string|false
         */
        protected static function get_extension( $mime_type = null ) {
                $extensions = explode( '|', array_search( $mime_type, wp_get_mime_types() ) );