mirror of
https://github.com/gosticks/wordpress-develop.git
synced 2025-10-16 12:05:38 +00:00
Media: Introduces image_editor_output_format filter for setting default MIME type of sub size image output.
This change introduces the `image_editor_output_format` filter, which fires as sub size images are generated allowing to define a default image MIME type for those items. Props adamsilverstein, williampatton, spacedmonkey, mikeschroder, hellofromTonya, justinahinon, Boniu91, antpb, SergeyBiryukov. Fixes #52867. git-svn-id: https://develop.svn.wordpress.org/trunk@50943 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
1ea3c49436
commit
5a2c3706ee
@ -316,6 +316,37 @@ abstract class WP_Image_Editor {
|
||||
$new_ext = $file_ext;
|
||||
}
|
||||
|
||||
/**
|
||||
* Filters the image editor output format mapping.
|
||||
*
|
||||
* Enables filtering the mime type used to save images. By default,
|
||||
* the mapping array is empty, so the mime type matches the source image.
|
||||
*
|
||||
* @see src/wp-includes/class-wp-image-editor.php -> get_output_format()
|
||||
*
|
||||
* @since 5.8.0
|
||||
*
|
||||
* @param array $wp_image_editor_output_format {
|
||||
* An array of mime type mappings. Maps a source mime type to a new
|
||||
* destination mime type. Empty by default.
|
||||
*
|
||||
* @type array $mime_type The source mime type {
|
||||
* @type string $mime_type The new mime type.
|
||||
* }
|
||||
* @param string $filename Path to the image.
|
||||
* @param string $mime_type The source image mime type.
|
||||
* }
|
||||
*/
|
||||
$wp_image_editor_output_format = apply_filters( 'image_editor_output_format', array(), $filename, $mime_type );
|
||||
|
||||
if (
|
||||
isset( $wp_image_editor_output_format[ $mime_type ] ) &&
|
||||
$this->supports_mime_type( $wp_image_editor_output_format[ $mime_type ] )
|
||||
) {
|
||||
$mime_type = $wp_image_editor_output_format[ $mime_type ];
|
||||
$new_ext = $this->get_extension( $mime_type );
|
||||
}
|
||||
|
||||
// Double-check that the mime-type selected is supported by the editor.
|
||||
// If not, choose a default instead.
|
||||
if ( ! $this->supports_mime_type( $mime_type ) ) {
|
||||
|
||||
@ -62,6 +62,29 @@ class Tests_Image_Intermediate_Size extends WP_UnitTestCase {
|
||||
unlink( DIR_TESTDATA . '/images/a2-small-100x75.jpg' );
|
||||
}
|
||||
|
||||
/**
|
||||
* @requires function imagejpeg
|
||||
* @ticket 52867
|
||||
*/
|
||||
function test_image_editor_output_format_filter() {
|
||||
add_filter(
|
||||
'image_editor_output_format',
|
||||
function() {
|
||||
return array( 'image/jpeg' => 'image/webp' );
|
||||
}
|
||||
);
|
||||
$file = DIR_TESTDATA . '/images/waffles.jpg';
|
||||
$image = image_make_intermediate_size( $file, 100, 75, true );
|
||||
$editor = wp_get_image_editor( $file );
|
||||
if ( is_wp_error( $editor ) || ! $editor->supports_mime_type( 'image/webp' ) ) {
|
||||
$this->assertSame( 'image/jpeg', $image['mime-type'] );
|
||||
} else {
|
||||
$this->assertSame( 'image/webp', $image['mime-type'] );
|
||||
}
|
||||
unlink( DIR_TESTDATA . '/images/' . $image['file'] );
|
||||
remove_all_filters( 'image_editor_output_format' );
|
||||
}
|
||||
|
||||
/**
|
||||
* @ticket 17626
|
||||
* @requires function imagejpeg
|
||||
|
||||
Loading…
Reference in New Issue
Block a user