mirror of
https://github.com/WordPress/WordPress.git
synced 2024-12-22 17:18:32 +01:00
Media: Fix converting of all HEIC/HEIF images to JPEGs after uploading regardless of dimensions.
Props ironprogrammer, adamsilverstein, azaozz. Fixes #62305. Built from https://develop.svn.wordpress.org/trunk@59317 git-svn-id: http://core.svn.wordpress.org/trunk@58703 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
parent
35264ca89c
commit
c53b87650b
@ -291,7 +291,22 @@ function wp_create_image_subsizes( $file, $attachment_id ) {
|
|||||||
* If the original image's dimensions are over the threshold,
|
* If the original image's dimensions are over the threshold,
|
||||||
* scale the image and use it as the "full" size.
|
* 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 ) ) {
|
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 ) ) {
|
||||||
|
$convert = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( $scale_down || $convert ) {
|
||||||
$editor = wp_get_image_editor( $file );
|
$editor = wp_get_image_editor( $file );
|
||||||
|
|
||||||
if ( is_wp_error( $editor ) ) {
|
if ( is_wp_error( $editor ) ) {
|
||||||
@ -299,14 +314,20 @@ function wp_create_image_subsizes( $file, $attachment_id ) {
|
|||||||
return $image_meta;
|
return $image_meta;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Resize the image.
|
if ( $scale_down ) {
|
||||||
$resized = $editor->resize( $threshold, $threshold );
|
// Resize the image. This will also convet it if needed.
|
||||||
|
$resized = $editor->resize( $threshold, $threshold );
|
||||||
|
} elseif ( $convert ) {
|
||||||
|
// The image will be converted (if possible) when saved.
|
||||||
|
$resized = true;
|
||||||
|
}
|
||||||
|
|
||||||
$rotated = null;
|
$rotated = null;
|
||||||
|
|
||||||
// If there is EXIF data, rotate according to EXIF Orientation.
|
// If there is EXIF data, rotate according to EXIF Orientation.
|
||||||
if ( ! is_wp_error( $resized ) && is_array( $exif_meta ) ) {
|
if ( ! is_wp_error( $resized ) && is_array( $exif_meta ) ) {
|
||||||
$resized = $editor->maybe_exif_rotate();
|
$resized = $editor->maybe_exif_rotate();
|
||||||
$rotated = $resized;
|
$rotated = $resized; // bool true or WP_Error
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( ! is_wp_error( $resized ) ) {
|
if ( ! is_wp_error( $resized ) ) {
|
||||||
@ -314,7 +335,11 @@ function wp_create_image_subsizes( $file, $attachment_id ) {
|
|||||||
* Append "-scaled" to the image file name. It will look like "my_image-scaled.jpg".
|
* Append "-scaled" to the image file name. It will look like "my_image-scaled.jpg".
|
||||||
* This doesn't affect the sub-sizes names as they are generated from the original image (for best quality).
|
* This doesn't affect the sub-sizes names as they are generated from the original image (for best quality).
|
||||||
*/
|
*/
|
||||||
$saved = $editor->save( $editor->generate_filename( 'scaled' ) );
|
if ( $scale_down ) {
|
||||||
|
$saved = $editor->save( $editor->generate_filename( 'scaled' ) );
|
||||||
|
} else {
|
||||||
|
$saved = $editor->save();
|
||||||
|
}
|
||||||
|
|
||||||
if ( ! is_wp_error( $saved ) ) {
|
if ( ! is_wp_error( $saved ) ) {
|
||||||
$image_meta = _wp_image_meta_replace_original( $saved, $file, $image_meta, $attachment_id );
|
$image_meta = _wp_image_meta_replace_original( $saved, $file, $image_meta, $attachment_id );
|
||||||
|
@ -6233,16 +6233,23 @@ function wp_high_priority_element_flag( $value = null ) {
|
|||||||
* @return string[] An array of mime type mappings.
|
* @return string[] An array of mime type mappings.
|
||||||
*/
|
*/
|
||||||
function wp_get_image_editor_output_format( $filename, $mime_type ) {
|
function wp_get_image_editor_output_format( $filename, $mime_type ) {
|
||||||
|
$default_output_format = array(
|
||||||
|
'image/heic' => 'image/jpeg',
|
||||||
|
'image/heif' => 'image/jpeg',
|
||||||
|
'image/heic-sequence' => 'image/jpeg',
|
||||||
|
'image/heif-sequence' => 'image/jpeg',
|
||||||
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Filters the image editor output format mapping.
|
* Filters the image editor output format mapping.
|
||||||
*
|
*
|
||||||
* Enables filtering the mime type used to save images. By default,
|
* Enables filtering the mime type used to save images. By default HEIC/HEIF images
|
||||||
* the mapping array is empty, so the mime type matches the source image.
|
* are converted to JPEGs.
|
||||||
*
|
*
|
||||||
* @see WP_Image_Editor::get_output_format()
|
* @see WP_Image_Editor::get_output_format()
|
||||||
*
|
*
|
||||||
* @since 5.8.0
|
* @since 5.8.0
|
||||||
* @since 6.7.0 The default was changed from array() to array( 'image/heic' => 'image/jpeg' ).
|
* @since 6.7.0 The default was changed from empty array to array containing the HEIC mime types.
|
||||||
*
|
*
|
||||||
* @param string[] $output_format {
|
* @param string[] $output_format {
|
||||||
* An array of mime type mappings. Maps a source mime type to a new
|
* An array of mime type mappings. Maps a source mime type to a new
|
||||||
@ -6253,5 +6260,5 @@ function wp_get_image_editor_output_format( $filename, $mime_type ) {
|
|||||||
* @param string $filename Path to the image.
|
* @param string $filename Path to the image.
|
||||||
* @param string $mime_type The source image mime type.
|
* @param string $mime_type The source image mime type.
|
||||||
*/
|
*/
|
||||||
return apply_filters( 'image_editor_output_format', array( 'image/heic' => 'image/jpeg' ), $filename, $mime_type );
|
return apply_filters( 'image_editor_output_format', $default_output_format, $filename, $mime_type );
|
||||||
}
|
}
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
*
|
*
|
||||||
* @global string $wp_version
|
* @global string $wp_version
|
||||||
*/
|
*/
|
||||||
$wp_version = '6.8-alpha-59316';
|
$wp_version = '6.8-alpha-59317';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.
|
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.
|
||||||
|
Loading…
Reference in New Issue
Block a user