diff options
author | Christoph M. Becker <cmb@php.net> | 2015-07-19 22:40:49 +0200 |
---|---|---|
committer | Christoph M. Becker <cmb@php.net> | 2015-07-19 22:40:49 +0200 |
commit | 6c8dbfd5c19b4327e2f785a4edd604fe32a51ebe (patch) | |
tree | e7c6eecce54011294f67f9ced644cfc0c04f2b11 | |
parent | 209223b97e179e27f1520a870e954e7de13c03bb (diff) | |
parent | 4b2d025937769d383e6a842a90658c58f10d5794 (diff) | |
download | php-git-6c8dbfd5c19b4327e2f785a4edd604fe32a51ebe.tar.gz |
Merge branch 'PHP-5.6'
* PHP-5.6:
updated NEWS
Fix #70102: imagecreatefromwebm() shifts colors
-rw-r--r-- | ext/gd/libgd/webpimg.c | 18 | ||||
-rw-r--r-- | ext/gd/tests/bug70102.phpt | 30 |
2 files changed, 39 insertions, 9 deletions
diff --git a/ext/gd/libgd/webpimg.c b/ext/gd/libgd/webpimg.c index 5f19bd78d6..90e5fd369d 100644 --- a/ext/gd/libgd/webpimg.c +++ b/ext/gd/libgd/webpimg.c @@ -57,21 +57,21 @@ static inline int clip(float v, int a, int b) { return (v > b) ? b : (v < 0) ? 0 : (int)(v); } enum { - COLOR_RED = 0, - COLOR_GREEN = 1, - COLOR_BLUE = 2, - ALPHA_CHANNEL = 3 + COLOR_RED = 1, + COLOR_GREEN = 2, + COLOR_BLUE = 3, + ALPHA_CHANNEL = 0 }; -/* endian neutral extractions of RGBA from a 32 bit pixel */ +/* endian neutral extractions of ARGB from a 32 bit pixel */ static const uint32 RED_SHIFT = - 8 * (sizeof(uint32) - 1 - COLOR_RED); /* 24 */ + 8 * (sizeof(uint32) - 1 - COLOR_RED); /* 16 */ static const uint32 GREEN_SHIFT = - 8 * (sizeof(uint32) - 1 - COLOR_GREEN); /* 16 */ + 8 * (sizeof(uint32) - 1 - COLOR_GREEN); /* 8 */ static const uint32 BLUE_SHIFT = - 8 * (sizeof(uint32) - 1 - COLOR_BLUE); /* 8 */ + 8 * (sizeof(uint32) - 1 - COLOR_BLUE); /* 0 */ static const uint32 ALPHA_SHIFT = - 8 * (sizeof(uint32) - 1 - ALPHA_CHANNEL); /* 0 */ + 8 * (sizeof(uint32) - 1 - ALPHA_CHANNEL); /* 24 */ static inline int GetRed(const uint32* rgba) { return gdTrueColorGetRed(*rgba); diff --git a/ext/gd/tests/bug70102.phpt b/ext/gd/tests/bug70102.phpt new file mode 100644 index 0000000000..b82c757ebe --- /dev/null +++ b/ext/gd/tests/bug70102.phpt @@ -0,0 +1,30 @@ +--TEST-- +Bug #70102 (imagecreatefromwebm() shifts colors) +--SKIPIF-- +<?php +if (!extension_loaded('gd')) die('skip gd extension not available'); +if (!function_exists('imagewebp') || !function_exists('imagecreatefromwebp')) + die('skip WebP support not available'); +?> +--FILE-- +<?php +$filename = __DIR__ . '/bug70102.webp'; + +$im = imagecreatetruecolor(8, 8); +$white = imagecolorallocate($im, 255, 255, 255); +var_dump($white & 0xffffff); +imagefilledrectangle($im, 0, 0, 7, 7, $white); +imagewebp($im, $filename); +imagedestroy($im); + +$im = imagecreatefromwebp($filename); +$color = imagecolorat($im, 4, 4); +var_dump($color & 0xffffff); +?> +--CLEAN-- +<?php +unlink(__DIR__ . '/bug70102.webp'); +?> +--EXPECT-- +int(16777215) +int(16777215) |