WP_Image_Editor_GD::load(): true|WP_Error

In this article

Loads image from $this->file into new GD Resource.

Return

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

Source

public function load() {
	if ( $this->image ) {
		return true;
	}

	if ( ! is_file( $this->file ) && ! preg_match( '|^https?://|', $this->file ) ) {
		return new WP_Error( 'error_loading_image', __( 'File does not exist?' ), $this->file );
	}

	// Set artificially high because GD uses uncompressed images in memory.
	wp_raise_memory_limit( 'image' );

	$file_contents = @file_get_contents( $this->file );

	if ( ! $file_contents ) {
		return new WP_Error( 'error_loading_image', __( 'File does not exist?' ), $this->file );
	}

	// WebP may not work with imagecreatefromstring().
	if (
		function_exists( 'imagecreatefromwebp' ) &&
		( 'image/webp' === wp_get_image_mime( $this->file ) )
	) {
		$this->image = @imagecreatefromwebp( $this->file );
	} else {
		$this->image = @imagecreatefromstring( $file_contents );
	}

	// AVIF may not work with imagecreatefromstring().
	if (
		function_exists( 'imagecreatefromavif' ) &&
		( 'image/avif' === wp_get_image_mime( $this->file ) )
	) {
		$this->image = @imagecreatefromavif( $this->file );
	} else {
		$this->image = @imagecreatefromstring( $file_contents );
	}

	if ( ! is_gd_image( $this->image ) ) {
		return new WP_Error( 'invalid_image', __( 'File is not an image.' ), $this->file );
	}

	$size = wp_getimagesize( $this->file );

	if ( ! $size ) {
		return new WP_Error( 'invalid_image', __( 'Could not read image size.' ), $this->file );
	}

	if ( function_exists( 'imagealphablending' ) && function_exists( 'imagesavealpha' ) ) {
		imagealphablending( $this->image, false );
		imagesavealpha( $this->image, true );
	}

	$this->update_size( $size[0], $size[1] );
	$this->mime_type = $size['mime'];

	return $this->set_quality();
}

Changelog

VersionDescription
3.5.0Introduced.

User Contributed Notes

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