mirror of
https://github.com/WordPress/WordPress.git
synced 2024-12-23 01:27:36 +01:00
Add ->get_quality()
method to WP_Image_Editor
class.
Adds unit tests. Props markoheijnen. Fixes #28154. Built from https://develop.svn.wordpress.org/trunk@28879 git-svn-id: http://core.svn.wordpress.org/trunk@28678 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
parent
a6a2183bf6
commit
cf95c6ecc2
@ -114,7 +114,7 @@ class WP_Image_Editor_GD extends WP_Image_Editor {
|
|||||||
$this->update_size( $size[0], $size[1] );
|
$this->update_size( $size[0], $size[1] );
|
||||||
$this->mime_type = $size['mime'];
|
$this->mime_type = $size['mime'];
|
||||||
|
|
||||||
return $this->set_quality( $this->quality );
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -394,7 +394,7 @@ class WP_Image_Editor_GD extends WP_Image_Editor {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
elseif ( 'image/jpeg' == $mime_type ) {
|
elseif ( 'image/jpeg' == $mime_type ) {
|
||||||
if ( ! $this->make_image( $filename, 'imagejpeg', array( $image, $filename, $this->quality ) ) )
|
if ( ! $this->make_image( $filename, 'imagejpeg', array( $image, $filename, $this->get_quality() ) ) )
|
||||||
return new WP_Error( 'image_save_error', __('Image Editor Save Failed') );
|
return new WP_Error( 'image_save_error', __('Image Editor Save Failed') );
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -442,7 +442,7 @@ class WP_Image_Editor_GD extends WP_Image_Editor {
|
|||||||
return imagegif( $this->image );
|
return imagegif( $this->image );
|
||||||
default:
|
default:
|
||||||
header( 'Content-Type: image/jpeg' );
|
header( 'Content-Type: image/jpeg' );
|
||||||
return imagejpeg( $this->image, null, $this->quality );
|
return imagejpeg( $this->image, null, $this->get_quality() );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -143,7 +143,7 @@ class WP_Image_Editor_Imagick extends WP_Image_Editor {
|
|||||||
if ( is_wp_error( $updated_size ) )
|
if ( is_wp_error( $updated_size ) )
|
||||||
return $updated_size;
|
return $updated_size;
|
||||||
|
|
||||||
return $this->set_quality( $this->quality );
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -160,7 +160,7 @@ class WP_Image_Editor_Imagick extends WP_Image_Editor {
|
|||||||
if ( is_wp_error( $quality_result ) ) {
|
if ( is_wp_error( $quality_result ) ) {
|
||||||
return $quality_result;
|
return $quality_result;
|
||||||
} else {
|
} else {
|
||||||
$quality = $this->quality;
|
$quality = $this->get_quality();
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
@ -16,7 +16,8 @@ abstract class WP_Image_Editor {
|
|||||||
protected $size = null;
|
protected $size = null;
|
||||||
protected $mime_type = null;
|
protected $mime_type = null;
|
||||||
protected $default_mime_type = 'image/jpeg';
|
protected $default_mime_type = 'image/jpeg';
|
||||||
protected $quality = 90;
|
protected $quality = false;
|
||||||
|
protected $default_quality = 90;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Each instance handles a single file.
|
* Each instance handles a single file.
|
||||||
@ -202,6 +203,49 @@ abstract class WP_Image_Editor {
|
|||||||
return true;
|
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 ) {
|
||||||
|
/**
|
||||||
|
* 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;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets Image Compression quality on a 1-100% scale.
|
* Sets Image Compression quality on a 1-100% scale.
|
||||||
*
|
*
|
||||||
@ -212,41 +256,12 @@ abstract class WP_Image_Editor {
|
|||||||
* @return boolean|WP_Error True if set successfully; WP_Error on failure.
|
* @return boolean|WP_Error True if set successfully; WP_Error on failure.
|
||||||
*/
|
*/
|
||||||
public function set_quality( $quality = null ) {
|
public function set_quality( $quality = null ) {
|
||||||
if ( $quality == null ) {
|
// Allow 0, but squash to 1 due to identical images in GD, and for backwards compatibility.
|
||||||
$quality = $this->quality;
|
if ( $quality == 0 ) {
|
||||||
|
$quality = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
if ( ( $quality >= 1 ) && ( $quality <= 100 ) ) {
|
||||||
* 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 ) {
|
|
||||||
/**
|
|
||||||
* 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' );
|
|
||||||
|
|
||||||
// Allow 0, but squash to 1 due to identical images in GD, and for backwards compatibility.
|
|
||||||
if ( $quality == 0 ) {
|
|
||||||
$quality = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( ( $quality >= 1 ) && ( $quality <= 100 ) ){
|
|
||||||
$this->quality = $quality;
|
$this->quality = $quality;
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
Reference in New Issue
Block a user