WP_Image_Editor_GD::load()publicWP 3.5.0

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

Метод класса: WP_Image_Editor_GD{}

Хуков нет.

Возвращает

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

Использование

$WP_Image_Editor_GD = new WP_Image_Editor_GD();
$WP_Image_Editor_GD->load();

Список изменений

С версии 3.5.0 Введена.

Код WP_Image_Editor_GD::load() WP 6.5.2

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();
}