From: Christoph M. Becker Date: Sat, 24 Sep 2016 12:44:57 +0000 (+0200) Subject: Don't enforce palette conversion when writing GD images X-Git-Tag: php-7.2.0alpha1~1232^2~35 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d95b8eaf31eb0613754b7aa38388cf038ed994fc;p=php Don't enforce palette conversion when writing GD images The GD image format is able to handle truecolor images as of libgd 2.0.12 (). Therefore we don't need the potentially lossy and time consuming palette conversion. This way, imagegd() can also be used to export raw truecolor image data. --- diff --git a/UPGRADING b/UPGRADING index feef5d61c8..2c66c4263a 100644 --- a/UPGRADING +++ b/UPGRADING @@ -95,6 +95,8 @@ PHP 7.2 UPGRADE NOTES - GD: . Removed --enable-gd-native-ttf configuration option which was unused as of PHP 5.5.0 anyway. + . imagegd() stores truecolor images as real truecolor images. Formerly, they + have been converted to palette. - Mbstring . mb_check_encoding() accepts array parameter. Both key and value diff --git a/ext/gd/gd.c b/ext/gd/gd.c index 29e5175286..739c069dd1 100644 --- a/ext/gd/gd.c +++ b/ext/gd/gd.c @@ -2565,9 +2565,6 @@ static void _php_image_output(INTERNAL_FUNCTION_PARAMETERS, int image_type, char (*func_p)(im, i, fp); break; case PHP_GDIMG_TYPE_GD: - if (im->trueColor){ - gdImageTrueColorToPalette(im,1,256); - } (*func_p)(im, fp); break; case PHP_GDIMG_TYPE_GD2: @@ -2619,9 +2616,6 @@ static void _php_image_output(INTERNAL_FUNCTION_PARAMETERS, int image_type, char (*func_p)(im, q, tmp); break; case PHP_GDIMG_TYPE_GD: - if (im->trueColor) { - gdImageTrueColorToPalette(im,1,256); - } (*func_p)(im, tmp); break; case PHP_GDIMG_TYPE_GD2: diff --git a/ext/gd/tests/imagegd_truecolor.phpt b/ext/gd/tests/imagegd_truecolor.phpt new file mode 100644 index 0000000000..1eedae484f --- /dev/null +++ b/ext/gd/tests/imagegd_truecolor.phpt @@ -0,0 +1,34 @@ +--TEST-- +imagegd() writes truecolor images without palette conversion +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +signature: 65534 +truecolor: 1 +size: 411 +The images are equal. +===DONE=== diff --git a/ext/gd/tests/imagegd_truecolor.png b/ext/gd/tests/imagegd_truecolor.png new file mode 100644 index 0000000000..8c77c9f422 Binary files /dev/null and b/ext/gd/tests/imagegd_truecolor.png differ