[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