wp_crop_image( string|int $src, int $src_x, int $src_y, int $src_w, int $src_h, int $dst_w, int $dst_h, bool|false $src_abs = false, string|false $dst_file = false ): string|WP_Error

Crops an image to a given size.

Parameters

$srcstring|intrequired
The source file or Attachment ID.
$src_xintrequired
The start x position to crop from.
$src_yintrequired
The start y position to crop from.
$src_wintrequired
The width to crop.
$src_hintrequired
The height to crop.
$dst_wintrequired
The destination width.
$dst_hintrequired
The destination height.
$src_absbool|falseoptional
If the source crop points are absolute.

Default:false

$dst_filestring|falseoptional
The destination file to write to.

Default:false

Return

string|WP_Error New filepath on success, WP_Error on failure.

Source

function wp_crop_image( $src, $src_x, $src_y, $src_w, $src_h, $dst_w, $dst_h, $src_abs = false, $dst_file = false ) {	$src_file = $src;	if ( is_numeric( $src ) ) { // Handle int as attachment ID.	$src_file = get_attached_file( $src );	if ( ! file_exists( $src_file ) ) {	/* * If the file doesn't exist, attempt a URL fopen on the src link. * This can occur with certain file replication plugins. */	$src = _load_image_to_edit_path( $src, 'full' );	} else {	$src = $src_file;	}	}	$editor = wp_get_image_editor( $src );	if ( is_wp_error( $editor ) ) {	return $editor;	}	$src = $editor->crop( $src_x, $src_y, $src_w, $src_h, $dst_w, $dst_h, $src_abs );	if ( is_wp_error( $src ) ) {	return $src;	}	if ( ! $dst_file ) {	$dst_file = str_replace( wp_basename( $src_file ), 'cropped-' . wp_basename( $src_file ), $src_file );	}	/* * The directory containing the original file may no longer exist when * using a replication plugin. */	wp_mkdir_p( dirname( $dst_file ) );	$dst_file = dirname( $dst_file ) . '/' . wp_unique_filename( dirname( $dst_file ), wp_basename( $dst_file ) );	$result = $editor->save( $dst_file );	if ( is_wp_error( $result ) ) {	return $result;	}	if ( ! empty( $result['path'] ) ) {	return $result['path'];	}	return $dst_file; } 

Changelog

VersionDescription
2.1.0Introduced.

User Contributed Notes

  1. Skip to note 2 content
    $attachment_id = 100; // Image attachment ID. $cropped_file = wp_crop_image(	$attachment_id, // Attachment ID.	1, // Position x on the image.	70, // Position y on the image.	100, // Selected for cropping width.	100, // Selected for cropping height.	100, // Desired Cropped image width.	100 // Desired cropped image height. ); // This will return 100x100 cropped image. if ( ! is_wp_error( $cropped_file ) ) {	echo $cropped_file; // Will return absolute path of cropped file. }

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