[wp-trac] [WordPress Trac] #24380: Missing Compression Parameter in WP_Image_Editor_GD

WordPress Trac noreply at wordpress.org
Tue May 21 03:17:57 UTC 2013


#24380: Missing Compression Parameter in WP_Image_Editor_GD
--------------------------+------------------------------
 Reporter:  MuViMoTV      |       Owner:
     Type:  defect (bug)  |      Status:  new
 Priority:  normal        |   Milestone:  Awaiting Review
Component:  Media         |     Version:  3.5.1
 Severity:  normal        |  Resolution:
 Keywords:  needs-patch   |
--------------------------+------------------------------
Changes (by SergeyBiryukov):

 * component:  Editor => Media


Old description:

> Setting the image quality parameter has no effect on png files.
>
> Going through the wp-includes/class-wp-image-editor-gd.php
>
> I noticed that the compression parameter for the imagepng function call
> is missing.
>
> the current quality parameter only affects jpeg files.
>
> for jpeg, quality goes from 0->100 from bad to good
>
> for png, from 0->9 from good to bad.
>
> in the elseif  block starting at line 337 i have added a variable called
> compression and changed the code as follow:
>
> elseif ( 'image/png' == $mime_type ) {
>                         // convert from full colors to index colors, like
> original PNG.
>                         if ( function_exists('imageistruecolor') && !
> imageistruecolor( $image ) )
>                                 imagetruecolortopalette( $image, false,
> imagecolorstotal( $image ) );
>
>                         $compression = -((9/100*$this->quality)-9);
>
>                         if ( ! $this->make_image( $filename, 'imagepng',
> array( $image, $filename, $compression ) ) )
>                                 return new WP_Error( 'image_save_error',
> __('Image Editor Save Failed') );
>                 }
>
> This convert the scale 0->100 into a 0->9 scale that matches the
> parameters from imaging.
>
> This gives back control to the user on image quality for png files...

New description:

 Setting the image quality parameter has no effect on png files.

 Going through the wp-includes/class-wp-image-editor-gd.php

 I noticed that the compression parameter for the imagepng function call is
 missing.

 the current quality parameter only affects jpeg files.

 for jpeg, quality goes from 0->100 from bad to good

 for png, from 0->9 from good to bad.

 in the elseif  block starting at line 337 i have added a variable called
 compression and changed the code as follow:
 {{{
 elseif ( 'image/png' == $mime_type ) {
                         // convert from full colors to index colors, like
 original PNG.
                         if ( function_exists('imageistruecolor') && !
 imageistruecolor( $image ) )
                                 imagetruecolortopalette( $image, false,
 imagecolorstotal( $image ) );

                         $compression = -((9/100*$this->quality)-9);

                         if ( ! $this->make_image( $filename, 'imagepng',
 array( $image, $filename, $compression ) ) )
                                 return new WP_Error( 'image_save_error',
 __('Image Editor Save Failed') );
                 }
 }}}
 This convert the scale 0->100 into a 0->9 scale that matches the
 parameters from imaging.

 This gives back control to the user on image quality for png files...

--

--
Ticket URL: <http://core.trac.wordpress.org/ticket/24380#comment:1>
WordPress Trac <http://core.trac.wordpress.org/>
WordPress blogging software


More information about the wp-trac mailing list