WP_Image_Editor_Imagick::set_quality( int $quality = null ): true|WP_Error

In this article

Sets Image Compression quality on a 1-100% scale.

Parameters

$qualityintoptional
Compression Quality. Range: [1,100]

Default:null

Return

true|WP_Error True if set successfully; WP_Error on failure.

Source

public function set_quality( $quality = null ) {
	$quality_result = parent::set_quality( $quality );
	if ( is_wp_error( $quality_result ) ) {
		return $quality_result;
	} else {
		$quality = $this->get_quality();
	}

	try {
		switch ( $this->mime_type ) {
			case 'image/jpeg':
				$this->image->setImageCompressionQuality( $quality );
				$this->image->setCompressionQuality( $quality );
				$this->image->setImageCompression( imagick::COMPRESSION_JPEG );
				break;
			case 'image/webp':
				$webp_info = wp_get_webp_info( $this->file );

				if ( 'lossless' === $webp_info['type'] ) {
					// Use WebP lossless settings.
					$this->image->setImageCompressionQuality( 100 );
					$this->image->setCompressionQuality( 100 );
					$this->image->setOption( 'webp:lossless', 'true' );
					parent::set_quality( 100 );
				} else {
					$this->image->setImageCompressionQuality( $quality );
					$this->image->setCompressionQuality( $quality );
				}
				break;
			case 'image/avif':
				// Set the AVIF encoder to work faster, with minimal impact on image size.
				$this->image->setOption( 'heic:speed', 7 );
				$this->image->setImageCompressionQuality( $quality );
				$this->image->setCompressionQuality( $quality );
				break;
			default:
				$this->image->setImageCompressionQuality( $quality );
				$this->image->setCompressionQuality( $quality );
		}
	} catch ( Exception $e ) {
		return new WP_Error( 'image_quality_error', $e->getMessage() );
	}
	return true;
}

Changelog

VersionDescription
3.5.0Introduced.

User Contributed Notes

You must log in before being able to contribute a note or feedback.