wp-admin/includes/image.php:240Creates image sub-sizes, adds the new data to the image meta sizes array, and updates the image metadata.
$filestring$attachment_idintarray2 hooks fire while wp_create_image_subsizes() runs, in this order:
Filters the "BIG image" threshold value.
Filters the image sizes automatically generated when uploading an image.
function wp_create_image_subsizes( $file, $attachment_id ) { $imagesize = wp_getimagesize( $file ); if ( empty( $imagesize ) ) { // File is not an image. return array(); } // Default image meta. $image_meta = array( 'width' => $imagesize[0], 'height' => $imagesize[1], 'file' => _wp_relative_upload_path( $file ), 'filesize' => wp_filesize( $file ), 'sizes' => array(), ); // Fetch additional metadata from EXIF/IPTC. $exif_meta = wp_read_image_metadata( $file ); if ( $exif_meta ) { $image_meta['image_meta'] = $exif_meta; } /** * Filters the "BIG image" threshold value. * * If the original image width or height is above the threshold, it will be scaled down. The threshold is * used as max width and max height. The scaled down image will be used as the largest available size, including * the `_wp_attached_file` post meta value. * * Returning `false` from the filter callback will disable the scaling. * * @since 5.3.0 * * @param int $threshold The threshold value in pixels. Default 2560. * @param array $imagesize { * Indexed array of the image width and height in pixels. * * @type int $0 The image width. * @type int $1 The image height. * } * @param string $file Full path to the uploaded image file. * @param int $attachment_id Attachment post ID. */ $threshold = (int) apply_filters( 'big_image_size_threshold', 2560, $imagesize, $file, $attachment_id ); /* * If the original image's dimensions are over the threshold, * scale the image and use it as the "full" size. */ $scale_down = false; $convert = false; if ( $threshold && ( $image_meta['width'] > $threshold || $image_meta['height'] > $threshold ) ) { // The image will be converted if needed on saving. $scale_down = true; } else { // The image may need to be converted regardless of its dimensions. $output_format = wp_get_image_editor_output_format( $file, $imagesize['mime'] ); if ( is_array( $output_format ) && array_key_exists( $imagesize['mime'], $output_format ) && $output_format[ $imagesize['mime'] ] !== $imagesize['mime'] ) { $convert = true; } } if ( $scale_down || $convert ) { $editor = wp_get_image_editor( $file ); if ( is_wp_error( $editor ) ) { // This image cannot be edited. return $image_meta; } if ( $scale_down ) { // Resize the image. This will also convet it if needed.Introduced in 5.3.0. Unchanged from 6.7.7 through 7.1.0.
Signature, return type and hooks compared across 5 parsed releases.
src/wp-admin/includes/image.php, and regenerated for each WordPress release so it tracks the code rather than a snapshot of it.