wp_image_matches_ratio

The timeline below displays how wordpress function wp_image_matches_ratio has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

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;
}

WordPress Version: 4.6

/**
 * 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 = abs($constrained_size[0] - $expected_size[0]) <= 1 && abs($constrained_size[1] - $expected_size[1]) <= 1;
    return $matched;
}