wp_image_matches_ratio( int $source_width, int $source_height, int $target_width, int $target_height ): bool

In this article

Helper function to test if aspect ratios for two images match.


Width of the first image in pixels.
Height of the first image in pixels.
Width of the second image in pixels.
Height of the second image in pixels.


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;



User Contributed Notes

You must log in before being able to contribute a note or feedback.