WordPress Version: 5.3
/**
* Helper function to test if aspect ratios for two images match.
*
* @since 4.6.0
*
* @param int $source_width Width of the first image in pixels.
* @param int $source_height Height of the first image in pixels.
* @param int $target_width Width of the second image in pixels.
* @param int $target_height Height of the second image in pixels.
* @return bool True if aspect ratios match within 1px. False if not.
*/
function wp_image_matches_ratio($source_width, $source_height, $target_width, $target_height)
{
/*
* To test for varying crops, we constrain the dimensions of the larger image
* to the dimensions of the smaller image and see if they match.
*/
if ($source_width > $target_width) {
$constrained_size = wp_constrain_dimensions($source_width, $source_height, $target_width);
$expected_size = array($target_width, $target_height);
} else {
$constrained_size = wp_constrain_dimensions($target_width, $target_height, $source_width);
$expected_size = array($source_width, $source_height);
}
// If the image dimensions are within 1px of the expected size, we consider it a match.
$matched = wp_fuzzy_number_match($constrained_size[0], $expected_size[0]) && wp_fuzzy_number_match($constrained_size[1], $expected_size[1]);
return $matched;
}