wp_get_image_editor()WP 3.5.0

Возвращает объект WP_Image_Editor с указанной картинкой. Используется для изменения размеров изображения (создания миниатюр) и редактирования картинки.

Над картинкой можно производить разные действия: уменьшать, поворачивать, переворачивать и т.д. Все это делается по средствам методов класса WP_Image_Editor (англ).

Измененную картинку легко можно сохранить в указанное место, см. пример.

Класс WP_Image_Editor расположен в файле: /wp-includes/class-wp-image-editor.php

Хуков нет.

Возвращает

WP_Image_Editor|WP_Error. Объект WP_Image_Editor или объект WP_Error, если не удалось получить картинку по переданному УРЛ или другой ошибки.

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

$image_editor = wp_get_image_editor( $path, $args );
$path(строка) (обязательный)
Путь до картинки-оригинала, на основе которой будем создавать копию.
$args(массив)
Дополнительные данные. Принимает: mime тип изображения и методы: mime_type, methods.
По умолчанию: array()

Примеры

0

#1 Создадим уменьшенную копию изображения

Предположим у нас есть картинка '/wp-content/uploads/2014/02/uka.png' (лежит на нашем сервере). Этот пример показывает, как создать уменьшенную копию этой картинки с помощью класса WP_Image_Editor:

$file_path = $_SERVER['DOCUMENT_ROOT'] . '/wp-content/uploads/2014/02/uka.png';

// загружаем объект
$image = wp_get_image_editor( $file_path );
// можно указать УРЛ, вместо абсолютного пути:
// $image = wp_get_image_editor( 'http://wp-kama.ru/wp-content/uploads/2014/02/uka.png' );

// обрабатываем картинку
if ( ! is_wp_error( $image ) ) {
	// повернем картинку на 90 градусов
	$image->rotate( 90 );
	// уменьшим её до размеров 80х80
	$image->resize( 80, 80, true );

	// сохраним в туже папку что и текущий файл, с названием {name}-{suffix}.{ext}
	$new_file_path = $image->generate_filename();

	// сохраним в корне сайта под названием new_image.png
	$image->save( $new_file_path );
}

Методы класса которые можно использовать для изменения изображения

Не нужно напрямую использовать класс редактора, лучше всегда использовать эту функцию - wp_get_image_editor(), которая является оберткой для класса WP_Image_Editor.

Методы WP_Image_Editor

WP_Image_Editor::supports_mime_type( $mime_type )
Проверяет поддерживает ли редактор указанный mime тип.
WP_Image_Editor::save( $destfilename = null, $mime_type = null )
Сохраняет текущую картинку в файл.
WP_Image_Editor::resize( $max_w, $max_h, $crop = false )

Изменяет размер текущего изображения.

Параметр $crop определяет нужно ли кадрировать изображение при уменьшении его размера и как кадрировать. Возможные значения параметра $crop:

  • false (по умолчанию) - картинка не будет кадрироваться, а будет уменьшена как есть пропорционально.
  • true - будет кадрироваться до указанных размеров от центра изображения.
  • массив - картинка будет кадрироваться до указанных размеров внутри указанной области. Область указывается в виде массива array( x_crop_position, y_crop_position ):
    • x_crop_position - может быть: 'left', 'center', или 'right'.
    • y_crop_position - может быть: 'top', 'center', или 'bottom'.
WP_Image_Editor::multi_resize( $sizes )
Обрабатывает текущую картинку и сохраняет на диск несколько указанных размеров сразу из одной обрабатываемой картинки.
WP_Image_Editor::crop( $src_x, $src_y, $src_w, $src_h, $dst_w = null, $dst_h = null, $src_abs = false )
Кадрирует изображение.
WP_Image_Editor::rotate( $angle )
Rotates current image counter-clockwise by $angle.
WP_Image_Editor::flip( $horz, $vert )
Переворачивает изображение по горизонтали, вертикали или и то и то.
WP_Image_Editor::stream( $mime_type = null )
Выводит текущее изображение в браузер.
WP_Image_Editor::get_size()
Получает разрешение картинки как массив с ключами: 'width' и 'height'.
WP_Image_Editor::update_size( $width = null, $height = null )
Устанавливает размер текущего изображения.
WP_Image_Editor::set_quality( $quality )
Устанавливает качество сжатия для JPG файлов. Указывается число от 1 до 100, которое соответствует процентам: 100% - лучшее качество 50% плохое качество, но сильное сжатие и меньший размер файла.
По умолчанию: 90
WP_Image_Editor::get_output_format( $filename = null, $mime_type = null )
Получает предпочитаемый mime тип и расширение получаемое на основе расширения файла или mime типа. По умолчанию берет значение свойства $this->default_mime_type определенное разрешение не поддерживается.
WP_Image_Editor::generate_filename( $suffix = null, $dest_path = null, $extension = null )
Создает итоговое название файла на основе текущего файла и соответствующего размерам суффикса.
WP_Image_Editor::get_suffix()
Строить и возвращает суффикс для названия файла на основе ширины и высоты.
WP_Image_Editor::make_image( $filename, $function, $arguments )
Вызывает save функцию редактора или обрабатывает файл когда $filename передан как поток. В $function и $arguments обычно указывается одна из функций: imagegif(), imagepng(), imagejpeg() и её параметры.
WP_Image_Editor::get_mime_type( $extension = null )
Получает mime по указанному расширению, например jpg. См. wp_get_mime_types().
WP_Image_Editor::get_extension( $mime_type = null )
Получает расширение по указанному mime типу. См. wp_get_mime_types().

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

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

Код wp_get_image_editor() WP 6.7.1

function wp_get_image_editor( $path, $args = array() ) {
	$args['path'] = $path;

	// If the mime type is not set in args, try to extract and set it from the file.
	if ( ! isset( $args['mime_type'] ) ) {
		$file_info = wp_check_filetype( $args['path'] );

		/*
		 * If $file_info['type'] is false, then we let the editor attempt to
		 * figure out the file type, rather than forcing a failure based on extension.
		 */
		if ( isset( $file_info ) && $file_info['type'] ) {
			$args['mime_type'] = $file_info['type'];
		}
	}

	// Check and set the output mime type mapped to the input type.
	if ( isset( $args['mime_type'] ) ) {
		$output_format = wp_get_image_editor_output_format( $path, $args['mime_type'] );
		if ( isset( $output_format[ $args['mime_type'] ] ) ) {
			$args['output_mime_type'] = $output_format[ $args['mime_type'] ];
		}
	}

	$implementation = _wp_image_editor_choose( $args );

	if ( $implementation ) {
		$editor = new $implementation( $path );
		$loaded = $editor->load();

		if ( is_wp_error( $loaded ) ) {
			return $loaded;
		}

		return $editor;
	}

	return new WP_Error( 'image_no_editor', __( 'No editor could be selected.' ) );
}
5 комментариев
    Войти