Opened 11 years ago
Closed 11 years ago
#29903 closed defect (bug) (duplicate)
possible bug in class-wp-image-editor.php (get_quality method)
Reported by: |
|
Owned by: | |
---|---|---|---|
Milestone: | Priority: | normal | |
Severity: | normal | Version: | 4.0 |
Component: | Media | Keywords: | |
Focuses: | Cc: |
Description
Hello,
I've been checking the code about WP_Image_Editor, and related classes.
Inside class-wp-image-editor.php, you have the abstract class WP_Image_Editor, with several method definitions that implementations of the editor should rewrite/define/implement/override.
If you have a look to the get_quality method, that is used to get the Image Compression quality for a given instance.
if the $quality attribute of the class is not set (default is (bool) false, then we try to get the quality using the filter "wp_editor_set_quality". We then retrieve the value and we keep it inside $quality.
Then after that, if image is jpeg (mime_type), we retrieve the quality using the filter "jpeg_quality", and then we set the $quality attribute of the current object using this $quality value.
For the case of the image being a jpeg is okay, but in the case the mime type will be other than jpeg, the $quality attibute is not set.
I think this is a bug.
I put here the code:
/** * 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 ) { /** * 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', $this->default_quality, $this->mime_type ); if ( 'image/jpeg' == $this->mime_type ) { /** * Filter the JPEG compression quality for backward-compatibility. * * 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' ); if ( ! $this->set_quality( $quality ) ) { $this->quality = $this->default_quality; } } } return $this->quality; }
Duplicate of #29856.