Функция wp_getimagesize() в WordPress
Функция wp_getimagesize() позволяет получить информацию о размере изображения, загруженного в WordPress. Если необходимо, она также позволяет отладить вызовы функции PHP getimagesize().
Возвращаемое значение
Функция возвращает массив с информацией об изображении или false, если возникла ошибка.
Использование
wp_getimagesize( $filename, ?array $image_info );
Параметры
- $filename (string) (обязательный) - Путь к файлу.
- ?array $image_info (по ссылке) - Массив для дополнительной информации об изображении. По умолчанию
null.
Примеры использования
Пример 1: Получение информации о прикрепленном изображении
$attach_id = 16837; // Идентификатор прикрепленного изображения
$path = get_attached_file( $attach_id ); // Получаем путь к файлу
$data = wp_getimagesize( $path ); // Получаем информацию о размере изображения
print_r( $data ); // Выводим информацию
Ожидаемый результат:
Array
(
[0] => 757
[1] => 234
[2] => 3
[3] => width="757" height="234"
[bits] => 8
[mime] => image/png
)
Пример 2: Получение данных по URL изображения
$src = 'https://example.com/wp-content/uploads/2024/02/clipboard-image-516943.png';
$upload_dir = wp_upload_dir(); // Получаем директорию загрузок
$image_path = str_replace( wp_make_link_relative( $upload_dir['baseurl'] ), $upload_dir['basedir'], wp_make_link_relative( $src ) );
$image_data = wp_getimagesize( $image_path ); // Получаем информацию о размере изображения
print_r( $image_data );
/*
Array
(
[0] => 754
[1] => 243
[2] => 3
[3] => width="754" height="243"
[bits] => 8
[mime] => image/png
)
*/
Важно:
Вы также можете получать данные по URL, но в этом случае будет выполнен HTTP-запрос, что может замедлить выполнение кода. Пример использования URL:
$image_data = wp_getimagesize( 'https://example.com/uploads/image.png' );
print_r( $image_data );
/*
Может вернуть аналогичные данные, но это не рекомендуется для производительности.
*/
Изменения в функции
Функция wp_getimagesize() была добавлена в версии 5.7.0. С тех пор были внесены изменения:
- В версии 5.8.0 добавлена поддержка изображений WebP.
- В версии 6.5.0 добавлена поддержка изображений AVIF.
Код функции wp_getimagesize()
function wp_getimagesize( $filename, ?array &$image_info = null ) {
if ( defined( 'WP_DEBUG' ) && WP_DEBUG && ! defined( 'WP_RUN_CORE_TESTS' ) ) {
if ( 2 === func_num_args() ) {
$info = getimagesize( $filename, $image_info );
} else {
$info = getimagesize( $filename );
}
} else {
if ( 2 === func_num_args() ) {
$info = @getimagesize( $filename, $image_info );
} else {
$info = @getimagesize( $filename );
}
}
if ( ! empty( $info ) && ! ( empty( $info[0] ) && empty( $info[1] ) ) ) {
return $info;
}
$image_mime_type = wp_get_image_mime( $filename );
if ( false === $image_mime_type ) {
return false;
}
if ( 'image/webp' === $image_mime_type ) {
$webp_info = wp_get_webp_info( $filename );
$width = $webp_info['width'];
$height = $webp_info['height'];
if ( $width && $height ) {
return array(
$width,
$height,
IMAGETYPE_WEBP,
sprintf( 'width="%d" height="%d"', $width, $height ),
'mime' => 'image/webp',
);
}
}
if ( 'image/avif' === $image_mime_type ) {
$avif_info = wp_get_avif_info( $filename );
$width = $avif_info['width'];
$height = $avif_info['height'];
if ( $width && $height ) {
return array(
$width,
$height,
IMAGETYPE_AVIF,
sprintf( 'width="%d" height="%d"', $width, $height ),
'mime' => 'image/avif',
);
}
}
if ( wp_is_heic_image_mime_type( $image_mime_type ) ) {
$editor = wp_get_image_editor( $filename );
if ( is_wp_error( $editor ) ) {
return false;
}
if ( $editor instanceof WP_Image_Editor_Imagick ) {
$size = $editor->get_size();
return array(
$size['width'],
$size['height'],
IMAGETYPE_HEIC,
sprintf( 'width="%d" height="%d"', $size['width'], $size['height'] ),
'mime' => 'image/heic',
);
}
}
return false; // Не удалось определить размер изображения
}
Связанные функции
file_is_displayable_image()next_image_link()previous_image_link()wp_get_additional_image_sizes()wp_get_attachment_url()wp_read_image_metadata()
Эти функции могут быть полезны при работе с изображениями в WordPress и помогут вам расширить возможности вашей работы с медиафайлами.