WP_Image_Editor_Imagick::_save()protectedWP 3.5.0

Method of the class: WP_Image_Editor_Imagick{}

Return

Array|WP_Error. Array on success or WP_Error if the file failed to save.

Usage

// protected - for code of main (parent) or child class
$result = $this->_save( $image, $filename, $mime_type );
$image(Imagick) (required)
-
$filename(string)
-
Default: null
$mime_type(string)
-
Default: null

Changelog

Since 3.5.0 Introduced.
Since 6.0.0 The $filesize value was added to the returned array.

WP_Image_Editor_Imagick::_save() code WP 6.5.2

protected function _save( $image, $filename = null, $mime_type = null ) {
	list( $filename, $extension, $mime_type ) = $this->get_output_format( $filename, $mime_type );

	if ( ! $filename ) {
		$filename = $this->generate_filename( null, null, $extension );
	}

	try {
		// Store initial format.
		$orig_format = $this->image->getImageFormat();

		$this->image->setImageFormat( strtoupper( $this->get_extension( $mime_type ) ) );
	} catch ( Exception $e ) {
		return new WP_Error( 'image_save_error', $e->getMessage(), $filename );
	}

	if ( method_exists( $this->image, 'setInterlaceScheme' )
		&& method_exists( $this->image, 'getInterlaceScheme' )
		&& defined( 'Imagick::INTERLACE_PLANE' )
	) {
		$orig_interlace = $this->image->getInterlaceScheme();

		/** This filter is documented in wp-includes/class-wp-image-editor-gd.php */
		if ( apply_filters( 'image_save_progressive', false, $mime_type ) ) {
			$this->image->setInterlaceScheme( Imagick::INTERLACE_PLANE ); // True - line interlace output.
		} else {
			$this->image->setInterlaceScheme( Imagick::INTERLACE_NO ); // False - no interlace output.
		}
	}

	$write_image_result = $this->write_image( $this->image, $filename );
	if ( is_wp_error( $write_image_result ) ) {
		return $write_image_result;
	}

	try {
		// Reset original format.
		$this->image->setImageFormat( $orig_format );

		if ( isset( $orig_interlace ) ) {
			$this->image->setInterlaceScheme( $orig_interlace );
		}
	} catch ( Exception $e ) {
		return new WP_Error( 'image_save_error', $e->getMessage(), $filename );
	}

	// Set correct file permissions.
	$stat  = stat( dirname( $filename ) );
	$perms = $stat['mode'] & 0000666; // Same permissions as parent folder, strip off the executable bits.
	chmod( $filename, $perms );

	return array(
		'path'      => $filename,
		/** This filter is documented in wp-includes/class-wp-image-editor-gd.php */
		'file'      => wp_basename( apply_filters( 'image_make_intermediate_size', $filename ) ),
		'width'     => $this->size['width'],
		'height'    => $this->size['height'],
		'mime-type' => $mime_type,
		'filesize'  => wp_filesize( $filename ),
	);
}