wp_get_image_mime() │ WP 4.7.1
Возвращает реальный mime-тип изображения.
Типу изображения в названии доверять нельзя, например, png изображение можно назвать как image.jpg .
Для точного определения mime используются PHP функции:
Используется в функции wp_check_filetype_and_ext() ;
1 раз — 0.135771 сек (тормоз) | 50000 раз — 176.48 сек (тормоз) | PHP 7.1.11, WP 4.9.4
Хуков нет.
Возвращает
Строку|false
. Актуальный mime-тип или false, если определить не удалось.
Использование
wp_get_image_mime( $file );
$file(строка) (обязательный)
Полный путь к файлу (изображению).
Примеры
#1 Получим mime-тип у картинки в файлах шаблона (скриншота темы)
$screenshot_path = get_template_directory() . '/screenshot.png';
echo wp_get_image_mime( $screenshot_path );
//> image/png
Добавить свой пример
Список изменений
С версии 4.7.1
Введена.
С версии 5.8.0
Added support for WebP images.
С версии 6.5.0
Added support for AVIF images.
Код wp_get_image_mime() wp get image mime
WP 6.6.2
function wp_get_image_mime( $file ) {
/*
* Use exif_imagetype() to check the mimetype if available or fall back to
* getimagesize() if exif isn't available. If either function throws an Exception
* we assume the file could not be validated.
*/
try {
if ( is_callable( 'exif_imagetype' ) ) {
$imagetype = exif_imagetype( $file );
$mime = ( $imagetype ) ? image_type_to_mime_type( $imagetype ) : false;
} elseif ( function_exists( 'getimagesize' ) ) {
// Don't silence errors when in debug mode, unless running unit tests.
if ( defined( 'WP_DEBUG' ) && WP_DEBUG
&& ! defined( 'WP_RUN_CORE_TESTS' )
) {
// Not using wp_getimagesize() here to avoid an infinite loop.
$imagesize = getimagesize( $file );
} else {
$imagesize = @getimagesize( $file );
}
$mime = ( isset( $imagesize['mime'] ) ) ? $imagesize['mime'] : false;
} else {
$mime = false;
}
if ( false !== $mime ) {
return $mime;
}
$magic = file_get_contents( $file, false, null, 0, 12 );
if ( false === $magic ) {
return false;
}
/*
* Add WebP fallback detection when image library doesn't support WebP.
* Note: detection values come from LibWebP, see
* https://github.com/webmproject/libwebp/blob/master/imageio/image_dec.c#L30
*/
$magic = bin2hex( $magic );
if (
// RIFF.
( str_starts_with( $magic, '52494646' ) ) &&
// WEBP.
( 16 === strpos( $magic, '57454250' ) )
) {
$mime = 'image/webp';
}
/**
* Add AVIF fallback detection when image library doesn't support AVIF.
*
* Detection based on section 4.3.1 File-type box definition of the ISO/IEC 14496-12
* specification and the AV1-AVIF spec, see https://aomediacodec.github.io/av1-avif/v1.1.0.html#brands.
*/
// Divide the header string into 4 byte groups.
$magic = str_split( $magic, 8 );
if (
isset( $magic[1] ) &&
isset( $magic[2] ) &&
'ftyp' === hex2bin( $magic[1] ) &&
( 'avif' === hex2bin( $magic[2] ) || 'avis' === hex2bin( $magic[2] ) )
) {
$mime = 'image/avif';
}
} catch ( Exception $e ) {
$mime = false;
}
return $mime;
}
Cвязанные функции