Changeset 54417 for trunk/tests/phpunit/tests/media.php
- Timestamp:
- 10/07/2022 07:15:59 PM (4 years ago)
- File:
-
- 1 edited
-
trunk/tests/phpunit/tests/media.php (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/tests/phpunit/tests/media.php
r54402 r54417 3622 3622 remove_filter( 'wp_omit_loading_attr_threshold', '__return_null', 100 ); 3623 3623 } 3624 3625 /** 3626 * Test that generated files with the `image_editor_output_format` applied use the correct 3627 * quality level based on their mime type. 3628 * 3629 * @ticket 56442 3630 */ 3631 public function test_quality_with_image_conversion_file_sizes() { 3632 add_filter( 'image_editor_output_format', array( $this, 'image_editor_output_jpeg' ) ); 3633 $temp_dir = get_temp_dir(); 3634 $file = $temp_dir . '/33772.jpg'; 3635 copy( DIR_TESTDATA . '/images/33772.jpg', $file ); 3636 3637 // Set JPEG output quality very low and WebP quality very high, this should force all generated WebP images to 3638 // be larger than the the matching generated JPEGs. 3639 add_filter( 'wp_editor_set_quality', array( $this, 'image_editor_change_quality_low_jpeg' ), 10, 2 ); 3640 3641 $editor = wp_get_image_editor( $file ); 3642 3643 // Verify that the selected editor supports WebP output. 3644 if ( ! $editor->supports_mime_type( 'image/webp' ) ) { 3645 $this->markTestSkipped( 'WebP is not supported by the selected image editor.' ); 3646 } 3647 3648 $attachment_id = self::factory()->attachment->create_object( 3649 array( 3650 'post_mime_type' => 'image/jpeg', 3651 'file' => $file, 3652 ) 3653 ); 3654 3655 add_filter( 'big_image_size_threshold', array( $this, 'add_big_image_size_threshold' ) ); 3656 3657 // Generate all sizes as JPEGs. 3658 $jpeg_sizes = wp_generate_attachment_metadata( $attachment_id, $file ); 3659 remove_filter( 'image_editor_output_format', array( $this, 'image_editor_output_jpeg' ) ); 3660 3661 // Generate all sizes as WebP. 3662 add_filter( 'image_editor_output_format', array( $this, 'image_editor_output_webp' ) ); 3663 $webp_sizes = wp_generate_attachment_metadata( $attachment_id, $file ); 3664 remove_filter( 'image_editor_output_format', array( $this, 'image_editor_output_webp' ) ); 3665 3666 // The main (scaled) image: the JPEG should be smaller than the WebP. 3667 $this->assertLessThan( $webp_sizes['filesize'], $jpeg_sizes['filesize'], 'The JPEG should be smaller than the WebP.' ); 3668 3669 // Sub-sizes: for each size, the JPEGs should be smaller than the WebP. 3670 $sizes_to_compare = array_intersect_key( $jpeg_sizes['sizes'], $webp_sizes['sizes'] ); 3671 foreach ( $sizes_to_compare as $size => $size_data ) { 3672 $this->assertLessThan( $webp_sizes['sizes'][ $size ]['filesize'], $jpeg_sizes['sizes'][ $size ]['filesize'] ); 3673 } 3674 } 3675 3676 /** 3677 * Add threshold to create a `-scaled` output image for testing. 3678 */ 3679 public function add_big_image_size_threshold() { 3680 return 1000; 3681 } 3682 3683 /** 3684 * Output JPEG files. 3685 */ 3686 public function image_editor_output_jpeg() { 3687 return array( 'image/jpeg' => 'image/jpeg' ); 3688 } 3689 3690 /** 3691 * Output WebP files. 3692 */ 3693 public function image_editor_output_webp() { 3694 return array( 'image/jpeg' => 'image/webp' ); 3695 } 3696 3697 /** 3698 * Changes the quality using very low quality for JPEGs and very high quality 3699 * for WebPs, used to verify the filter is applying correctly. 3700 * 3701 * @param int $quality Default quality. 3702 * @param string $mime_type Image mime-type. 3703 * @return int The changed quality. 3704 */ 3705 public function image_editor_change_quality_low_jpeg( $quality, $mime_type ) { 3706 if ( 'image/jpeg' === $mime_type ) { 3707 return 1; 3708 } elseif ( 'image/webp' === $mime_type ) { 3709 return 100; 3710 } else { 3711 return 30; 3712 } 3713 } 3714 3624 3715 } 3625 3716
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)