WordPress Version: 6.5
/**
* Extracts meta information about an AVIF file: width, height, bit depth, and number of channels.
*
* @since 6.5.0
*
* @param string $filename Path to an AVIF file.
* @return array {
* An array of AVIF image information.
*
* @type int|false $width Image width on success, false on failure.
* @type int|false $height Image height on success, false on failure.
* @type int|false $bit_depth Image bit depth on success, false on failure.
* @type int|false $num_channels Image number of channels on success, false on failure.
* }
*/
function wp_get_avif_info($filename)
{
$results = array('width' => false, 'height' => false, 'bit_depth' => false, 'num_channels' => false);
if ('image/avif' !== wp_get_image_mime($filename)) {
return $results;
}
// Parse the file using libavifinfo's PHP implementation.
require_once ABSPATH . WPINC . '/class-avif-info.php';
$handle = fopen($filename, 'rb');
if ($handle) {
$parser = new Avifinfo\Parser($handle);
$success = $parser->parse_ftyp() && $parser->parse_file();
fclose($handle);
if ($success) {
$results = $parser->features->primary_item_features;
}
}
return $results;
}