WordPress Version: 6.5
/**
* Allows PHP's getimagesize() to be debuggable when necessary.
*
* @since 5.7.0
* @since 5.8.0 Added support for WebP images.
* @since 6.5.0 Added support for AVIF images.
*
* @param string $filename The file path.
* @param array $image_info Optional. Extended image information (passed by reference).
* @return array|false Array of image information or false on failure.
*/
function wp_getimagesize($filename, array &$image_info = null)
{
// Don't silence errors when in debug mode, unless running unit tests.
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;
}
/*
* For PHP versions that don't support WebP images,
* extract the image size info from the file headers.
*/
if ('image/webp' === wp_get_image_mime($filename)) {
$webp_info = wp_get_webp_info($filename);
$width = $webp_info['width'];
$height = $webp_info['height'];
// Mimic the native return format.
if ($width && $height) {
return array($width, $height, IMAGETYPE_WEBP, sprintf('width="%d" height="%d"', $width, $height), 'mime' => 'image/webp');
}
}
// For PHP versions that don't support AVIF images, extract the image size info from the file headers.
if ('image/avif' === wp_get_image_mime($filename)) {
$avif_info = wp_get_avif_info($filename);
$width = $avif_info['width'];
$height = $avif_info['height'];
// Mimic the native return format.
if ($width && $height) {
return array($width, $height, IMAGETYPE_AVIF, sprintf('width="%d" height="%d"', $width, $height), 'mime' => 'image/avif');
}
}
// The image could not be parsed.
return false;
}